Les booléens en Python⚓︎
Booléens et opérateurs
En Python, les booléens sont représentés par les valeurs True
et False
.
Les opérateurs booléens de base sont and
, or
et not
.
>>> True and False
False
>>> True or False
True
>>> not True
False
Priorités
Comme pour les opérations mathématiques, il y a des priorités sur les opérations booléennes.
>>> True or True and False
True
>>> (True or True) and False
False
>>> True or (True and False)
True
Le and
est prioritaire sur le or
. De même, not
est prioritaire sur les autres opérations.
>>> not False and False
False
>>> not (False and False)
True
>>> (not False) and False
False
Pour tester
Les booléens comme résultat d'une opération
En programmation, les booléens sont en général obtenus à l'aide d'opérations, comme des comparaisons. Les comparaisons ne sont pas les seules opérations donnant des booléens (appartenance à une chaîne de caractères ou une liste, inclusion d'un ensemble dans un autre...)
Les opérateurs de comparaison
En maths | En Python |
---|---|
\(a = b\) | a == b |
\(a \neq b\) | a != b |
\(a > b\) | a > b |
\(a \geq b\) | a >= b |
\(a < b\) | a < b |
\(a \leq b\) | a <= b |
Exercice 1 (sur papier)
Python permet d'écrire directement \(a < b < c\).
Écrire cette expression à l'aide de deux comparaisons et d'un opérateur logique.
Solution
Il suffit d'écrire a < b and b < c
.
Exercice 2 (sur papier)
- Expliquer pourquoi l'expression "
3 == 3 or x == y
" est vraie pour toute valeur dex
et dey
. - Expliquer pourquoi l'expression "
1 == 2 and x == y
" est fausse pour toute valeur dex
et dey
.
Solutions
- Puisque
3 == 3
est toujours vraie et que "A ou B" est vraie dès qu'un des deux booléens est vrai, alors "3 == 3 or x == y
" est toujours vraie. - Puisque
1 == 2
est toujours fausse et que "A et B" est fausse dès qu'un des deux booléens est faux, alors "1 == 2 and x == y
" est toujours fausse.
Évaluation paresseuse
Lorsque Python évalue une expression booléenne, il le fait de façon paresseuse. C'est-à-dire que si la partie gauche d'un or
est vraie, il n'évalue pas la partie droite. De même si la partie gauche d'un and
est fausse, la partie droite n'est pas évaluée.
Cela permet d'écrire des choses comme :
>>> x = 0
>>> x == 0 or 0 < 1/x < 1
True
>>> x != 0 and 0 < 1/x < 1
False
Explications
Si la division 1/x
était évaluée, il y aurait une erreur, puisqu'on ne peut pas diviser par \(0\). Mais dans les deux cas, l'évaluation n'est pas faite puisque le résultat de l'expression a déjà pu être déterminée avec la partie gauche.