En savoir plus

Les tables de vérité

Derrière chaque and, or et not se cache une petite table qui dit tout. Et une astuce, signée De Morgan, pour retourner une condition sans se tromper.

L'astuce de De Morgan : retourner une condition#

Pour inverser un and ou un or, il y a une règle mécanique : on inverse chaque morceau ET on échange andor.

not (A and B) == (not A) or (not B) not (A or B) == (not A) and (not B)

Actionne les deux interrupteurs A et B

A
False
B
False
not (A and B)
-
(not A) or (not B)
-

Exemple concret : « l'eau n'est pas potable » s'écrit not (pH >= 6.5 and pH <= 8.5), soit pH < 6.5 or pH > 8.5. Les deux sont identiques.

Bonus : le court-circuit qui te protège#

Python lit les conditions de gauche à droite et s'arrête dès qu'il peut conclure. Dans un and, si la première partie est Fausse, il ne lit même pas la seconde (le résultat est déjà Faux). On s'en sert pour éviter des plantages :

if diviseur != 0 and total / diviseur > 2: ... # la division n'est tentée que si diviseur n'est pas nul

Si diviseur vaut 0, la première condition est Fausse, Python s'arrête, et la division dangereuse n'a jamais lieu. L'ordre des conditions n'est donc pas neutre.

Rappel : la table complète#

La ligne qui correspond aux interrupteurs choisis plus haut s'allume automatiquement.

ABA and BA or Bnot A

and n'est Vrai que sur une seule ligne (les deux Vrais). or est Vrai partout sauf quand les deux sont Faux.

Pour mémoire : une condition ne vaut que deux choses#

En logique, une expression vaut toujours Vrai ou Faux - jamais « un peu ». À partir de deux conditions A et B, on en combine d'autres avec trois opérateurs. Une table de vérité liste tous les cas possibles : avec deux conditions, il n'y en a que quatre.

and / or / not, un par un#

À l'aide des interrupteurs A et B (tout en haut), chaque combinaison se calcule en direct.

Deux conditions

A and B
-
A or B
-
not A
-
not B
-