Erreur de code a corriger
Résolu
shaykat
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 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 ?
A voir également:
- Pfxpxy code 5
- Code ascii - Guide
- Code puk bloqué - Guide
- Code activation windows 10 - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code blocks - Télécharger - Langages
5 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
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
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, pourquoi pas plutôt:
cela devrait faire la même chose, étant donné que tu n'utilises pas la valeur de i.
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.