Erreur zip argument #2 must support iterable
Résolu
SerialCookie
-
SerialCookie -
SerialCookie -
Bonjour,
Je suis novice en Python et suis en train de créer un programme permettant de calculer l'angle de projection d'une balle optimal selon une certaine vitesse initiale. Le problème est que j'utilise une boucle for en zippant 2 listes, mais l'erreur semble me dire que la 2ème n'est pas itérable... Je vous avoue que je ne comprends pas bien. Voici mon code :
et voici l'erreur :
Traceback (most recent call last):
File "/media/moi/FA8D-7FFC/Python/Graphique3.py", line 39, in <module>
go(vitesse)
File "/media/moi/FA8D-7FFC/Python/Graphique3.py", line 13, in go
plt.legend(max(xs))
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2692, in legend
return gca().legend(*args, **kwargs)
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 403, in legend
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/legend.py", line 1289, in _parse_legend_args
in zip(_get_legend_handles(axs, handlers), labels)]
TypeError: zip argument #2 must support iteration
>>>
Je suis novice en Python et suis en train de créer un programme permettant de calculer l'angle de projection d'une balle optimal selon une certaine vitesse initiale. Le problème est que j'utilise une boucle for en zippant 2 listes, mais l'erreur semble me dire que la 2ème n'est pas itérable... Je vous avoue que je ne comprends pas bien. Voici mon code :
# -*- coding: utf-8 -*- from matplotlib import pyplot as plt import math xs=[] def go(nbr_courbes): angles=[] vitesses=[] for i in frange(1,90,1): angles.append(i) vitesses.append(vitesse) for a,b in zip(vitesses,angles): trace_trajectoire(a,b) plt.legend(max(xs)) def trace_graph(x,y): plt.plot(x,y) plt.xlabel(u'Coordonnées x') plt.ylabel(u'Coordonnées y') plt.title(u'Comparaison de chutes libres de corps') def frange(debut, fin, incrementation): nombres=[] while debut<fin: nombres.append(debut) debut+=incrementation return nombres def trace_trajectoire(u,theta): theta=math.radians(theta) g=9.8 t_vol=2*u*math.sin(theta)/g intervalles=frange(0,t_vol,0.001) x=[] y=[] for t in intervalles: x.append(u*math.cos(theta)*t) y.append(u*math.sin(theta)*t-0.5*g*t*t) xs.append(max(x)) trace_graph(x,y) if __name__=='__main__': vitesse=float(input('Entrez la vitesse initiale pour laquelle vous voulez trouver le meilleur angle (m/s) : ')) go(vitesse) plt.show()
et voici l'erreur :
Traceback (most recent call last):
File "/media/moi/FA8D-7FFC/Python/Graphique3.py", line 39, in <module>
go(vitesse)
File "/media/moi/FA8D-7FFC/Python/Graphique3.py", line 13, in go
plt.legend(max(xs))
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2692, in legend
return gca().legend(*args, **kwargs)
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 403, in legend
- kwargs)
File "/home/moi/anaconda3/lib/python3.7/site-packages/matplotlib/legend.py", line 1289, in _parse_legend_args
in zip(_get_legend_handles(axs, handlers), labels)]
TypeError: zip argument #2 must support iteration
>>>
Configuration: Linux / Chrome 84.0.4147.89
A voir également:
- Typeerror: zip argument #2 must support iteration
- Supercopier 2 - Télécharger - Gestion de fichiers
- Télécharger 7-zip - Télécharger - Compression & Décompression
- Express zip - Télécharger - Compression & Décompression
- Comment ouvrir un fichier zip - Guide
- Bbox must - Accueil - Guide box et connexion Internet
3 réponses
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
as-tu analysé le message d'erreur?
as-tu vu à quelle ligne se produit l'erreur?
le message d'erreur te prévient qu'un élément n'est pas itirable. de quel élément s'agit-il?
as-tu analysé le message d'erreur?
as-tu vu à quelle ligne se produit l'erreur?
le message d'erreur te prévient qu'un élément n'est pas itirable. de quel élément s'agit-il?
Pour moi, le message d'erreur parle de la ligne 11 : for a,b in zip(vitesses,angles): et dit que la liste "angles" n'est pas itérable, ce que je ne comprends pas étant donné que ce dernier est une liste...
Oulaaaaa... Merci beaucoup yg_be ! Effectivement, j'étais persuadé que l'erreur venait du zip dans la boucle for, mais en regardant plus au-dessus, je vois que le message d'erreur semble parler de l'argument de plt.legend()... Serait-ce bien ça ?
Effectivement, j'ai mis comme argument la valeur max d'une liste, donc un élément non-itérable. J'ai seulement eu à créer une liste contenant la valeur max de l'autre liste et le tour est joué ;) Merci encore pour ton aide yg_be, ça fait plaisir de voir des gens qui ne rabaissent pas les novices comme moi !