line 6, in high if num > z: UnboundLocalError: local variable 'z' referenced before assignment
4 Réponses :
Vous ne pouvez pas utiliser une variable sans la définir au préalable, vous devez donc définir z = x [0]
Le deuxième problème est avec print (z) code > z est une variable locale que vous ne pouvez pas appeler comme ça, vous devez enregistrer tout ce que
high ()
retourne d'abord dans une variable puis l'imprimer
x = [5 ,8 , 3 ,29, 445, 54] def high(): z = x[0] for num in x: if num > z: z = num return z z = high() print(z)
Après avoir défini z = x [0]
, il est plus judicieux de commencer le traitement de la liste à x [1]
c'est-à-dire pour num in x [1:]: < / code>
Je sais, tu as raison. J'avais l'intention de garder simple pour lui / elle de savoir ce que j'ai ajouté sans confusion. Je pense que tout est question d'apprendre et non de répondre à la meilleure chose
@Nick Logiquement, c'est vrai, mais utiliser x [1:]
entraînerait la copie de la liste entière (moins le premier élément), ce qui en général serait bien plus lent que de vérifier le premier élément. Cette optimisation n'aurait de sens que si elle utilisait un index pour accéder aux éléments de la liste, en évitant la copie, mais ce serait probablement plus lent également.
@TomKarzes intéressant. J'aurais pensé que dans un contexte comme num in x [1:]
, l'interpréteur aurait été assez intelligent pour se rendre compte qu'il n'avait pas besoin d'une copie. Merci de m'en avoir informé, j'essaierai d'éviter cette construction.
Vous devez toujours déclarer une variable avant d'utiliser cette variable.
x = [5 ,8 , 3 ,29, 445, 54] def high(x): z = 0 # add this line and.. for num in x: if num > z: z = num return z z = high(x) # ..this line print(z)
Merci de nous avoir contactés. Tout d'abord, z n'a pas été défini dans votre fonction. Nous définissons z et le définissons sur un entier de 0. Le code
x = [5 ,8 , 3 ,29, 445, 54] def high(list_of_numbers): z = 0 for num in x: if num > z: z = num return z print(high(x))
vous devez d'abord déclarer une variable avant d'utiliser cette variable globalement en utilisant global keyword.like z = x [0]
x=[5,8,3,29,445,54] def high(): global z z=x[0] for num in x: if(num>z): z=num return z high() print(z)
Vous avez dit à Python de faire quelque chose lorsque
num code> est plus grand que
z code>, mais qu'est-ce que
z code>?