0
votes

Évaluation de la logique booléenne avec 3 variables ou plus

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


0 commentaires

3 Réponses :


0
votes

C'est l'explication que je peux penser de xxx


0 commentaires

0
votes

Son suppose comme trois entrées et table de porte xxx

si vous souhaitez comprendre plus de variables xxx


3 commentaires

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?



-1
votes

OK, je l'ai travaillé.

L'opérateur "==" prend la priorité et est en cours d'évaluation en premier.

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>

avec des supports xxx

sans crochets xxx


6 commentaires

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, == 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 pour être (A == B) et (c == d) non a == (b et c) == d ), donc true et false et true == faux est analysé comme étant (true) et (faux) et (true == false) , qui est évidemment false x et faux et x est nécessairement faux.


Masklinn - donc la déclaration "vrai et vrai et faux == faux" est en train d'être divisé en 1.) "Vrai et vrai" , 2.) " FALSE == FALSE ". 1.), 2.) sont évalués en premier, puis les résultats de 1.), 2.) sont évalués comme "1.) et 2.) " retourner 'vrai' ?


@ ilmatic9000 C'est exactement ce que j'ai expliqué dans ma réponse - avec la priorité