Python : NameError

Résolu/Fermé
BernardGamer123 - 10 févr. 2022 à 23:30
georges97 Messages postés 12863 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 8 janvier 2025 - 11 févr. 2022 à 10:50
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 38371 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 janvier 2025 4 722
10 févr. 2022 à 23:31
Bonjour,

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


0
BernardGamer123
10 févr. 2022 à 23:32
??
0
jordane45 Messages postés 38371 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 7 janvier 2025 4 722 > BernardGamer123
10 févr. 2022 à 23:35
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 12863 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 8 janvier 2025 2 452
Modifié le 11 févr. 2022 à 08:47
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
......je suis un debutant pas un pro mais merci maintenant mon code fonctionne
0
georges97 Messages postés 12863 Date d'inscription lundi 31 janvier 2011 Statut Contributeur Dernière intervention 8 janvier 2025 2 452 > BernardGamer123
11 févr. 2022 à 10:50
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