Python : NameError

Résolu
BernardGamer123 -  
georges97 Messages postés 20323 Statut Contributeur -
Bonjour j'ai voulu ecrire une boucle while mais des que j'essaie de lancer le programme
NameError: name 'numbers_choice' is not defined s'affiche ? pour vous aidez voici mon code
print("vous devez marquer le prix exact")

while numbers_choice != "1900":
    numbers_choice = input("ici :")

if numbers_choice == "1900":
    print("c'est gagne !")

if numbers_choice > "1900":
    print("c'est moins !")

if numbers_choice < "1900":
    print("c'est plus !")

if numbers_choice == "1900":
    print("c'est gagne !")

if numbers_choice > "1900":
    print("c'est moins !")

if numbers_choice < "1900":
    print("c'est plus !")

2 réponses

jordane45 Messages postés 40050 Statut Modérateur 4 754
 
Bonjour,

Tu testes une variable ... qui n'existe pas encore ...


0
BernardGamer123
 
??
0
jordane45 Messages postés 40050 Statut Modérateur 4 754 > BernardGamer123
 
while numbers_choice != "1900":

Sauf que la variable numbers_choice ... tu l'initialise DANS ton while ...

Initialise la variable AVANT ton while ..
numbers_choice  = ""
while numbers_choice != "1900":
0
georges97 Messages postés 20323 Statut Contributeur 2 693
 
Bonjour,

Il y a, de mon point de vue, plusieurs autres erreurs dans le code transmis:

1) la variable numbers_choice devrait être initialisée comme un entier et non comme une chaîne de caractères puisque le test détermine si le nombre entré est supérieur ou inférieur.

Donc:

numbers_choice = 0

2) l'ensemble des "if" devrait être indenté, sinon, on reste sur l'entrée "ici:" mais on n'a jamais les affichages "c'est plus", "c'"est moins". On a juste "c'est gagné" quand on entre la bonne réponse.

3) l'input doit être précédé de la fonction int sinon l'entrée est par défaut une chaîne de caractères et on a un message d'erreur concernant la comparaison entre les types de l'entée et de la variable initiale.

soit:

numbers_choice = int(input("ici :"))

4) j'oubliais, il y a deux fois les mêmes lignes, d'où un double affichage en retour.

Edit: et aussi, toutes les lignes if numbers_choice == "1900":
doivent s'écrire sous la forme: if numbers_choice == 1900:
pour permettre le traitement d'une variable numérique.



Je pense que Jordan, que je salue, n'a pas relevé ces erreurs en s'étant arrêté à l'erreur initiale, ce qui était le sujet du post.
0
BernardGamer123
 
......je suis un debutant pas un pro mais merci maintenant mon code fonctionne
0
georges97 Messages postés 20323 Statut Contributeur 2 693 > BernardGamer123
 
Ca tombe bien, je ne suis pas pro non plus. Nous pratiquons l'entraide et non pas le tutorat, Même s'il y a des codeurs avertis, comme Jordane45.

Si une réponse comporte des points d'ombre, vous pouvez le signaler. Mais je pense avoir détaillé, y compris en rédigeant les lignes en cause (ce qui n'est pas systématique) en tenant justement compte du fait que des débutants s'initient à python, pour lequel je suis également en apprentissage.

Par ailleurs, votre réponse ne permet en aucun cas de continuer à vous aider, d'une part parce que vous ne dîtes pas ce que vous n'avez pas compris, d'autre part parce que nous ne pouvons même pas savoirs si vous avez appliqué une des corrections proposées par Jordane ou par moi.

A quoi sert de ce fait de vous adresser à des intervenants, qui ne peuvent apporter de précisions que s'il y a un minimum d'interactivité.

En attendant de lire donc, votre code corrigé..
0