Erreur de code a corriger
Résolu
shaykat
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai écrit un code pour tracer la trajectoire d'un projectile sur python 3.6, et il y a une erreur : il me dit "can't multiply sequence by non-int of type 'float'"
voila mon code :
pouvez vous m'aider ?
J'ai écrit un code pour tracer la trajectoire d'un projectile sur python 3.6, et il y a une erreur : il me dit "can't multiply sequence by non-int of type 'float'"
voila mon code :
# toutes les importations necessaires
import matplotlib as pp
import math
# toutes les variables necessaires
masse = float(input("Entrer la masse du sat : ")) # en kg
alt = float(input("Entrer l'altitude de largage : ")) # en m
v = float(input("Entrer la vitesse horizontal : ")) # en m/s
Rt = 6371000 # rayon de la terre
h = alt + Rt # hauteur par rapport au centre de la terre
Mt = 5,972*(10**24) # masse de la terre # variables pour tracer la terre
perimetre = 2*math.pi*h #calcul de la vitesse angulaire
periode = perimetre/v
w = (2*math.pi)/periode
G = 6.67*10**-11 #calcul de l'acceleration gravitationnelle
g = (G)*(masse)*(Mt)/(h)**2
teta = 0
t = 0
y = [h]
x = [0]
xT = [1]
yT = [0]
if (x!=xT and y!=yT) : #on pose la condition pour tracer
t += 1
teta = teta + w
g = (G*masse*Mt)/h**2 # variation de l'acceleration gravitationnelle
h = -0.5*g*t**2+t*h # variation de l'alltitude
x.append(h*math.sin(teta))
y.append(h*math.cos(teta))
for i in range(0,2*math.pi,math.pi/180): # on dessine la terre
xT.append(Rt*math.cos(teta))
yT.append(Rt*math.sin(teta))
pp.plot(x,y,color = 'b',label='trajectoire')
pp.plot(xT,yT,color = 'r',label='terre')
pp.legend()
pp.show()
pouvez vous m'aider ?
5 réponses
-
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
ne pourrais-tu pas simplifier la ligne 12 à 14 en:w = v/h
?
n'as-tu aucune indication de la ligne où se produit l'erreur? -
Ce serait pas à cause de tes nombres décimales ? On dirait que t'as utilisé une virgule au lieu d'un point :
Mt = 5,972*(10**24) -
effectivement, en remplaçant la virgule par un point, ça marche.
mais maintenant j'ai
File "/Users/shaykat/OneDrive - IPSA/personnel/scientific/python/graph trajectoire sat.py", line 35, in <module>
for i in range(0.2*math.pi,math.pi/180): # on dessine la terre
TypeError: 'float' object cannot be interpreted as an integer -
Bonjour,
Mes connaissances sont basiques, mais après recherche, la structure conditionnelle for i in range renvoie une liste d'entiers comprise entre les arguments a et b. Hors le premier argument est un float. D'où l'avertissement..
http://www.ac-nice.fr/maths/mathv2/images/admin/documents/resslycee/guide_de_démarrage-_Algorithmes_et_Programmation_V11.pdf
Je suppose donc qu'il faudra introduire des instructions dans la boucle plutôt que des décimales dans le compteur.
Cordialement -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
yg_be Messages postés 23437 Date d'inscription Statut Contributeur Dernière intervention Ambassadeur 1 588
bonjour, pourquoi pas plutôt:for i in range(0,360,1):
cela devrait faire la même chose, étant donné que tu n'utilises pas la valeur de i.