Aller au contenu principal

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 ») vaut True seulement si a ET b valent True ;
  • a or b (« ou ») vaut True dès que l'un des deux au moins vaut True ;
  • 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 False

Colonnes : 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
False

La 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)
False

La 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 True

Somme 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.

Tableau : a, b, not a, not a or b
abnot anot a or b
FalseFalseTrueTrue
FalseTrueTrueTrue
TrueFalseFalseFalse
TrueTrueFalseTrue

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

Tableau : a, b, a and b, a or b, a xor b, not a
aba and ba or ba xor bnot a
000001
010111
100110
111100

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.

Explorer les autres cours

Accès rapide