While et opérateurs or et and

Résolu

Bonjour à tous, 

en voulant m'entrainer avec les boucles while, je me trouve fasse à un souci. 

reponse = ""

while reponse != "oui" or reponse != "non":
    reponse = input("Un café ? ")
else:
    print("OK")

si je réponds "oui" ou "non, le programme continue de boucler. et me redemande "Un café". 

Mais si je remplace l'opérateur "or" par "and", le programme se met à fonctionner. 

Il me semblait pourtant que True and False ou bien False and True = False.

Alors qu'avec l'opérateur "or", il suffit d'un seul True dans une condition pour que la condition soit validée ? 

Merci d'avance !
Windows / Chrome 108.0.0.0

2 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonsoir

    tout d'abord, pour poster un code, merci de préciser qu'il s'agit de python, comme décrit là 

    https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

    Ensuite, je te conseille la lecture d'un cours sur l'algèbre de Bool.

    Ca aide beaucoup en développement de savoir de quoi il retourne 

    https://www.qwant.com/?client=brz-brave&q=algebre+de+bolo+cours&t=web


    1. Bonsoir,

      je crois avoir compris, 

      Avec l'opérateur or, si la réponse donnée est "oui" ou "non", une des deux conditions devient : False, mais étant donné que l'autre condition reste : True, avec l'opérateur or, l'ensemble reste True. Donc le programme continue à boucler.

      Merci pour la réponse en tout cas.  

  2. Certes.

    Mais quand tu auras besoin de mélanger des et des ou des ou exclusifs des non etc...

    Le feras tu aussi au petit bonheur la chance ?

    Comme pour l'algèbre numérique, chaque opération a un résultat spécifique, il y a des priorités et des propriétés.

    Connaitre l'algèbre de bool permet d'éviter des déconvenues.


    1. Effectivement, j'ai compris quel était le problème en consultant ton lien :) 

      Pas en tâtonnant, du coup oui, je me suis mis à la lecture de quelques cours d'algèbre booléenne plus sérieusement.  

      Merci encore !

    2. Contributeur
      @Pythonbegg

      bonjour,

      Par ailleurs, c'est la même chose en français:

      si il ne pleut pas et/ou qu'il ne neige pas.