Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1189 connectés 

  FORUM HardWare.fr
  Programmation
  Python

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2345295
jyggalag
Posté le 27-01-2020 à 18:46:16  profilanswer
 

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...   :(

mood
Publicité
Posté le 27-01-2020 à 18:46:16  profilanswer
 

n°2345297
antac
..
Posté le 27-01-2020 à 19:46:56  profilanswer
 

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
n°2345298
jyggalag
Posté le 27-01-2020 à 20:41:04  profilanswer
 

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
n°2345299
antac
..
Posté le 27-01-2020 à 20:46:31  profilanswer
 

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

n°2345300
jyggalag
Posté le 27-01-2020 à 20:52:04  profilanswer
 

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 :

n°2345301
antac
..
Posté le 27-01-2020 à 21:26:19  profilanswer
 

Tu passes des entiers ou des floats ?

n°2345304
jyggalag
Posté le 27-01-2020 à 22:03:36  profilanswer
 

Des entiers.  [:jyggalag]

n°2345308
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2020 à 08:12:24  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2345309
rufo
Pas me confondre avec Lycos!
Posté le 28-01-2020 à 08:20:01  profilanswer
 

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 Cantine Calandreta : http://sourceforge.net/projects/canteen-calandreta
n°2345313
antac
..
Posté le 28-01-2020 à 09:33:55  profilanswer
 

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
mood
Publicité
Posté le 28-01-2020 à 09:33:55  profilanswer
 

n°2345315
antac
..
Posté le 28-01-2020 à 09:58:14  profilanswer
 

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
n°2345317
antac
..
Posté le 28-01-2020 à 11:56:39  profilanswer
 

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))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

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

 

Sujets relatifs
PHPMailer retour en cas d'erreur de réceptionErreur : "'int' object is not subscriptable"
[PHP] - nesbot/Carbon: diffForHumans() amène une erreur 500Erreur Excerpt - Impossible d'enregistrer une page du thème
array_filter pour les champs vides, mais pas "0"[Python] Erreur de Syntaxe try:
Erreur macro pythonErreur import librairie python
interprétation d'une erreur javaErreur code Formulaire de saisie excel
Plus de sujets relatifs à : Erreur : "TypeError: iteration over a 0-d array"


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR