While et opérateurs or et and

Résolu
Pythonbegg -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -

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

  1. Utilisateur anonyme
     

    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


    0
    1. Pythonbegg
       

      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.  

      1
  2. Utilisateur anonyme
     

    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.


    0
    1. Pythonbegg
       

      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 !

      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > 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.

        0