Python

Résolu/Fermé
Higevi34 Messages postés 3 Date d'inscription jeudi 10 septembre 2020 Statut Membre Dernière intervention 27 octobre 2020 - 10 sept. 2020 à 08:52
yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 - 10 sept. 2020 à 17:09
Bonjour,

Si il y a des bons programmeurs de python parmi nous peuvent-ils m'aider à voir l'erreur dans ce bout de code :




En faite ce que je cherche à faire c'est de forcer l'utilisateur à écrire bonjour ou bonsoir
et tant que ce n'est pas écrit on lui repose la question.


Le problème c'est qu'une fois testé dans l'interpréteur la question est posée
en permanence même si on remplit une des deux conditions.


Je veux juste comprendre pourquoi il affiche la question sans arrêt alors qu'il y a bien une condition (même deux !) pour arrêter la boucle.


J'ai déja réussi à faire ce que je voulais d'une autre façon : en mettant une deuxième variable booléenne. Mais le code est plus long.
Ce code marche aussi si on mets seulement une condition dans le while et non deux. Et ça je ne comprends pas. J'ai pourtant mis le "or"=ou. )

1 réponse

yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 Ambassadeur 1 533
10 sept. 2020 à 09:30
bonjour,
peux-tu partager du texte, et pas des images? et utiliser les baises de code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

c'est un soucis de logique, pas de programmation.
la condition est toujours vraie, le texte étant évidemment toujours différent de l'un des deux.

un peu comme si tu écrivais "je reste à l'intérieur quand le jour n'est pas un samedi ou n'est pas un dimanche": tu ne sortiras jamais.

tu veux probablement utiliser "et", et pas "ou".
donc
!= and !=

ou bien
not ( = or =)

mais surement pas
!= or !=
0
Higevi34 Messages postés 3 Date d'inscription jeudi 10 septembre 2020 Statut Membre Dernière intervention 27 octobre 2020
10 sept. 2020 à 12:51
Bonjour yg_be,

Je te remercie pour ta réponse.

En effet, je viens d'essayer le code en utilisant "and" et il est fonctionnel.

J'ai encore un peu de mal à voir pourquoi le "or" ne marchait pas.

Littéralement le code voudrait dire : Tant que a est différent de Bonjour ou a est différent de Aurevoir :
Reposer la question.

D'ailleurs voici le code tel que je l'ai essayé au départ :


a = str(0)
b = 0
while a != "Bonjour" and a != "Bonsoir" :
a = input("Entrez une formule de politesse : ")
b = 67 #Ensuite il execute ce bloc d'instruction pour voir si tout va bien
print(b)
0
yg_be Messages postés 23184 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 15 septembre 2024 1 533 > Higevi34 Messages postés 3 Date d'inscription jeudi 10 septembre 2020 Statut Membre Dernière intervention 27 octobre 2020
10 sept. 2020 à 17:09
tout mot est différent de bonjour ou différent de aurevoir, non?
presque tous les mots sont différents de bonjour et différents de aurevoir.
0