Erreur de code a corriger
Résolu
shaykat
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
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 ?
A voir également:
- Pfxpxy code 5
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
5 réponses
ne pourrais-tu pas simplifier la ligne 12 à 14 en:
n'as-tu aucune indication de la ligne où se produit l'erreur?
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)
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
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
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