Problème boucle while

Fermé
FireStorm - 5 avril 2019 à 18:20
 FireStorm - 8 avril 2019 à 22:52
Bonjour,
J'ai voulu mettre dans un programme une boucle while qui se répète tant que la réponse à ma question n'est pas "oui" ou "non" (Un truc basique quoi.)
while valide != True:
-------reponserecom = input("Souhaitez-vous recommencer? (oui ou non): ").lower()
-------if reponserecom == "oui" or "non":
-----------valide = True
Or, même quand valide est en False, la boucle s'arrête et passe à la suite. Quelqu'un pourrait me dire ce qui ne va pas?
Merci d'avance;

1 réponse

yg_be Messages postés 22768 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 480
Modifié le 5 avril 2019 à 20:21
comment sais-tu que valide est faux? je ne vois pas d'instruction qui en affiche la valeur. je pense que tu supposes qu'il est faux, et tu ne cherches donc pas pourquoi il est vrai.
en réalité, tu testes ainsi:
if (reponserecom == "oui")  or ("non"):
, et "non" est toujours vrai.
alors que tu veux probablement tester:
if (reponserecom == "oui")  or (reponserecom == "non"):
0
J'avais mis une ligne print() qui affiche la variable et il y avait bien marqué False. Désolé, j'aurais dû préciser...
0
yg_be Messages postés 22768 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 8 mai 2024 1 480 > FireStorm
5 avril 2019 à 21:33
peux-tu montrer ton code avec ce print?
0
Vu que je l'ai enlevé je sais plus trop, mais il me semble bien que je l'ai mis là:
while valide != True:
-------reponserecom = input("Souhaitez-vous recommencer? (oui ou non): ").lower()
-------print(reponserecom)
-------if reponserecom == "oui" or "non":
-----------valide = True
0
Ah nan pardon c'est print(valide) et il est à la ligne au dessus, je sais pas pourquoi j'ai mis ça désolé..
0
quent217 Messages postés 421 Date d'inscription vendredi 25 septembre 2015 Statut Membre Dernière intervention 1 mars 2024 344
7 avril 2019 à 21:18
Bonjour,
en mettant le print à cet endroit là ou à la ligne du dessus, tu verras sa valeur avant qu'elle ne soit modifié dans le if, il est donc logique qu'il affiche False car tu as initialisé valide à False avant la boucle.
Si tu met le print(valide) à la dernière ligne de la boucle, tu verras que valide vaut True.
0