Python : NameError

Résolu
BernardGamer123 -  
georges97 Messages postés 13768 Date d'inscription   Statut Contributeur Dernière intervention   -
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 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

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


0
BernardGamer123
 
??
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > 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 13768 Date d'inscription   Statut Contributeur Dernière intervention   2 648
 
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 13768 Date d'inscription   Statut Contributeur Dernière intervention   2 648 > 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