Erreur : "TypeError: iteration over a 0-d array"

Erreur : "TypeError: iteration over a 0-d array" - Python - Programmation

Marsh Posté le 27-01-2020 à 18:46:16    

Rebonjour.  [:jyggalag]  
 
Me revoici, de nouveau embêté car décidément, chaque partie de Python comporte des subtilités qui parfois m'échappent...
 
Notamment cette erreur alors que je tente d'initier un bête tableau pour faire en sorte de trouver le plus grand nombre.
 
Voici le script, avec en rouge la ligne concernée par l'erreur :  
 

Code :
  1. from numpy import *
  2. tableau=array(int(x) for x in input('Veuillez entrer les valeurs du tableau (séparées par des virgules) :').split())
  3. z=tableau
  4. var=0
  5. var2=0
  6. for z in tableau:
  7.     entier=int(i)
  8.     print(i)
  9.     if entier>var:
  10.         var=i
  11. print(var)


 
Il me faut impérativement une réponse avant demain...   :(

Reply

Marsh Posté le 27-01-2020 à 18:46:16   

Reply

Marsh Posté le 27-01-2020 à 19:46:56    

Je ne comprends absolument pas comment tu fais pour complexifier un truc comme ça...  

Code :
  1. tuple = input('Veuillez entrer les valeurs du tableau (separees par des virgules)')
  2. max=0
  3. for var in tuple:
  4.     if var>max :
  5.         max = var
  6. print max


 
Je n'ai presque jamais fait de Python, il n'y a pas de test particulier sur le type de variable, c'est brut de fonderie mais bon...


Message édité par antac le 28-01-2020 à 09:58:43
Reply

Marsh Posté le 27-01-2020 à 20:41:04    

Merci, mais le nouveau script me donne un nouveau message.  :pt1cable:  
 
La ligne concernée en rouge :  

Code :
  1. tuple = input('Veuillez entrer les valeurs du tableau (séparées par des virgules)')
  2. max=0
  3. for var in tuple:
  4.     if var>max :
  5.         max = var
  6. print(var)


 
L'erreur :  
 

Code :
  1. TypeError: unorderable types: str() > int()


Message édité par jyggalag le 27-01-2020 à 20:50:12
Reply

Marsh Posté le 27-01-2020 à 20:46:31    

Ben dans ce cas fait int(var) > max et max=int(var)

Reply

Marsh Posté le 27-01-2020 à 20:52:04    

Python est vraiment remonté contre moi...  [:jyggalag]  
 

Code :
  1. ValueError: invalid literal for int() with base 10: ','


 
Ligne concernée :  
 

Code :
  1. if int(var)>max :

Reply

Marsh Posté le 27-01-2020 à 21:26:19    

Tu passes des entiers ou des floats ?

Reply

Marsh Posté le 27-01-2020 à 22:03:36    

Des entiers.  [:jyggalag]

Reply

Marsh Posté le 28-01-2020 à 08:12:24    

Pareil, jamais fait de Python, mais je suis étonné par la ligne 4 : z contient le tableau. Du coup, la ligne 7 n'a aucune sens pour moi. Dans un parcours de tableau via une boucle for, on attend en général une variable de type entier qui sert d'indice de boucle et un tableau.
 
Edit : ce tuto semble me donner raison : https://moncoachdata.com/blog/boubo [...] -avancees/


Message édité par rufo le 28-01-2020 à 08:14:33

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-01-2020 à 08:20:01    

Du coup, le code, ça donnerait d'après moi :

Code :
  1. from numpy import *
  2.    tableau=array(int(x) for x in input('Veuillez entrer les valeurs du tableau (séparées par des virgules) :').split())
  3.    max=0
  4.    for z in tableau:
  5.        print(z)
  6.        if z > max:
  7.            max=z
  8.    print(max)


Après, c'est pas exclu d'avoir un pb de cast entre z qui semble être une chaîne et max qui est un entier. Du coup, faudra chercher comment on fait un cast d'une string en int.
Il faudra peut-être faire :  
if int(z) > max:
    max = int(z)


Message édité par rufo le 28-01-2020 à 09:59:17

---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 28-01-2020 à 09:33:55    

Mon code fonctionne sous Python 2 effectivement, je vois pour le passer en Python 3


Message édité par antac le 28-01-2020 à 09:50:03
Reply

Marsh Posté le 28-01-2020 à 09:33:55   

Reply

Marsh Posté le 28-01-2020 à 09:58:14    

En Python 3  

Code :
  1. t= [eval(x) for x in input("Veuillez entrer les valeurs du tableau (separees par des virgules)'" ).split(',')]
  2. max=0
  3. for var in t:
  4.     if int(var)>max :
  5.         max = int(var)
  6. print (max)


Message édité par antac le 28-01-2020 à 11:53:17
Reply

Marsh Posté le 28-01-2020 à 11:56:39    

Et encore plus simple :  

Code :
  1. t= [eval(x) for x in input("Veuillez entrer les valeurs du tableau (separees par des virgules)'" ).split(',')]
  2. print (max(t))

Reply

Marsh Posté le 27-02-2020 à 14:58:11    

jyggalag a écrit :

Rebonjour.  [:jyggalag]  
 
Me revoici, de nouveau embêté car décidément, chaque partie de Python comporte des subtilités qui parfois m'échappent...
 
Notamment cette erreur alors que je tente d'initier un bête tableau pour faire en sorte de trouver le plus grand nombre.
 
Voici le script, avec en rouge la ligne concernée par l'erreur :  
 

Code :
  1. from numpy import *
  2. tableau=array(int(x) for x in input('Veuillez entrer les valeurs du tableau (séparées par des virgules) :').split())
  3. z=tableau
  4. var=0
  5. var2=0
  6. for z in tableau:
  7.     entier=int(i)
  8.     print(i)
  9.     if entier>var:
  10.         var=i
  11. print(var)


 
Il me faut impérativement une réponse avant demain...   :(


 
J'arrive vachement après la bataille mais au cas où, dans ton script initial y a un schmurtz :
 
Ligne 4

Code :
  1. z=tableau


 
Ligne 7

Code :
  1. for z in tableau:


 
z est une liste (ligne 4), non un élément d'une liste (ligne 7).
 
Python n'a pas dû apprécier la blague.


---------------
Samsung Galaxy S1 -> Samsung Galaxy S2 -> Samsung Note 2 -> Huawei Ascend Mate 7 -> ZTE Axon 7 -> OnePlus 6T -> Oppo Find X2 PRO -> Google Pixel 9 PRO XL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed