J'essaie de comprendre le comportement de Python lorsque j'évalue trois variables booléennes.
>>> True and False and True == False False >>> False and True and True == False False
3 Réponses :
C'est l'explication que je peux penser de
Son suppose comme trois entrées et table de porte si vous souhaitez comprendre plus de variables p>
Ananth, ce que vous décrivez est le comportement que j'attendrais. Toutefois, si vous entrez "Faux et true et true == False" dans la console Python, il évaluera à "Faux".
J'ai mis à jour mon message original avec une capture d'écran du comportement
@ iLmatic9000 ofcourse it Faux, pouvez-vous s'il vous plaît laissez-moi savoir ce que vous ne pouviez pas comprendre?
OK, je l'ai travaillé.
L'opérateur "==" prend la priorité et est en cours d'évaluation en premier. p>
Si je joins de la déclaration à gauche entre parenthèses alors je reçois le Comportement attendu spécifié dans la réponse Publié par https://stackoverflow.com/users/10384101/anantth-p << / p>
sans crochets strong> p>
Exactement, je t'ai aidé?
La question était que je n'ai pas enfermé la déclaration à gauche entre parenthèses. Python a évalué le "==" avant d'évaluer le "et" qui causait le comportement observé dans mon poste initial. Alors oui, vous avez été utile pour confirmer ma compréhension des opérations booléennes. par exemple. Les deux affirmations suivantes sont identiques en dehors des supports sur le LHS. Le premier évalue à «Faux» et le second à «vrai». >>> faux et vrai et vrai == faux faux >>> (faux et vrai et vrai) == faux vrai
Oui, la précédente et les supports ont joué un rôle ici
"L'opérateur" == 'prend sa priorité et est en cours d'évaluation "non, == code> est évalué en dernier et paresseusement. Ce qui vous manque, c'est que les opérateurs booléens sont "en haut" (parce que vous voulez généralement par exemple
a == b et c == d code> pour être
(A == B) et (c == d) code> non
a == (b et c) == d code>), donc
true et false et true == faux code> est analysé comme étant
(true) et (faux) et (true == false) code>, qui est évidemment
false code>
x et faux et x code> est nécessairement faux.
Masklinn - donc la déclaration "vrai et vrai et faux == faux" b> est en train d'être divisé en 1.) "Vrai et vrai" b>, 2.) " FALSE == FALSE " B>. 1.), 2.) b> sont évalués en premier, puis les résultats de 1.), 2.) b> sont évalués comme "1.) et 2.) " B> retourner 'vrai' b>?
@ ilmatic9000 C'est exactement ce que j'ai expliqué dans ma réponse - avec la priorité