Informatique · Première · 4 min de lecture
Booléens : vrai, faux, et les opérateurs and, or, not
Valeurs booléennes (vrai, faux ; 1, 0) ; opérateurs and, or, not et ou exclusif (xor) ; table de vérité d'une expression booléenne ; évaluation séquentielle de and et or en Python (le second opérande n'est évalué que si nécessaire) ; addition binaire comme application (somme = xor, retenue = and).
Chapitre du programme : Numérique et sciences informatiques (spécialité)
Bloc 1 sur 7 · Comprendre
Comprendre : deux valeurs, trois opérateurs
Un booléen ne prend que deux valeurs : vrai ou faux, notées True et False en Python, ou 1 et 0. Ce sont les valeurs des conditions : x > 3 vaut True ou False.
Trois opérateurs les combinent :
a and b(« et ») vautTrueseulement si a ET b valentTrue;a or b(« ou ») vautTruedès que l'un des deux au moins vautTrue;not a(« non ») inverse la valeur de son opérande.
Le ou exclusif (xor) vaut True quand exactement l'un des deux vaut True ; entre deux booléens, Python l'écrit a != b.
La table de vérité d'une expression donne sa valeur pour toutes les combinaisons de ses variables. Ce programme dresse celle des opérateurs and, or et xor :
for a in [False, True]:
for b in [False, True]:
print(a, b, a and b, a or b, a != b)False False False False False
False True False True True
True False False True True
True True True True FalseColonnes : a, b, a and b, a or b, a xor b. Avec deux variables, il y a 2 × 2 = 4 lignes ; avec n variables, 2ⁿ lignes.
Bloc 2 sur 7 · Approfondir
Approfondir : priorités et évaluation séquentielle
Priorités. En Python, not passe avant and, qui passe avant or ; les parenthèses passent avant tout.
a = True
b = False
c = False
print(a or b and c)
print((a or b) and c)
print(not a or c)True
False
FalseLa première ligne se lit a or (b and c) : a vaut True, donc le tout vaut True. Avec des parenthèses autour de a or b, le résultat change.
Évaluation séquentielle. and et or évaluent leur opérande de gauche d'abord, et n'évaluent celui de droite que si c'est nécessaire : si la gauche d'un and est fausse, le tout est faux sans regarder la droite.
x = 0
print(x != 0 and 10 // x > 1)FalseLa division 10 // x, qui provoquerait une erreur pour x = 0, n'est jamais calculée : c'est voulu, et on l'utilise pour protéger un calcul.
Une application : l'addition binaire. Pour ajouter deux bits a et b, le bit de somme est a xor b, et la retenue est a and b. Avec a = b = 1 (True) :
a = True
b = True
print(a != b, a and b)False TrueSomme 0, retenue 1 : en binaire, 1 + 1 = 10.
Bloc 3 sur 7 · Exemple
Exemple guidé : la table de not a or b
Énoncé. Dresser la table de vérité de not a or b, et compter les lignes où elle vaut True.
| a | b | not a | not a or b |
|---|---|---|---|
| False | False | True | True |
| False | True | True | True |
| True | False | False | False |
| True | True | False | True |
L'expression vaut True sur 3 lignes sur 4 : elle est fausse seulement dans le cas où a vaut True et b vaut False. On ajoute une colonne par sous-expression : c'est la méthode la plus sûre.
Bloc 4 sur 7 · Visualiser
Voir : les opérateurs en un tableau
| a | b | a and b | a or b | a xor b | not a |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 1 | 0 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 0 | 0 |
Continuez sur votre lancée
Vous avez découvert l’essentiel et un exemple. Retrouvez la suite du cours et les points à retenir, puis passez à l’entraînement guidé dans votre compte.
- Les formules et les repères à retenir
- Les erreurs fréquentes expliquées
- Un exercice avec des aides et sa correction
L’accès gratuit comprend les cours et exercices de votre niveau choisi.
Sources
- BO spécial n°1 du 22 janvier 2019 — programme de spécialité numérique et sciences informatiques de première, « Valeurs booléennes, opérateurs booléens »
- Documentation officielle de Python 3 — The Python Language Reference, § 6.11 « Boolean operations » et § 6.17 « Operator precedence » (https://docs.python.org/3/reference/expressions.html)
Vous pensez avoir trouvé une erreur dans cette leçon ? Signalez-la par e-mail.