Zoom sur les booléens
Introduction
Pour l’instant, nous avons vu deux grands types de données : les nombres (entier ou flottant) et les chaînes de caractères, il existe un troisième type tout aussi important que les deux premiers : les booléens. Un booléen est un type de données qui ne peut prendre que deux valeurs : vrai (True) ou faux (False). Une expression est soit True, soit False.
Les opérateurs de comparaison renvoient des booléens.
a == 0: teste siaest égal à 0 ;a != 0: teste siaest différent de 0 ;a < 0: teste siaest strictement inférieur à 0 ;a > 0: teste siaest strictement supérieur à 0 ;a <= 0: teste siaest inférieur ou égal à 0 ;a >= 0: teste siaest supérieur ou égal à 0.
Notez le double égal == qui permet de distinguer un test d’égalité d’une affectation (association d’une valeur à un nom (variable)). Le fait de confondre le “simple égal” et le “double égal” est une erreur classique qu’il faut éviter.
En programmation informatique, un booléen est un type de variable à deux états (généralement notés vrai et faux), destiné à représenter les valeurs de vérité de la logique et l’algèbre booléenne. Il est nommé ainsi d’après George Boole (1815-1864), fondateur dans le milieu du XIXe siècle de l’algèbre portant son nom.
Nous avons vu qu’en Python, les deux valeurs booléennes sont notées True et False.
De manière équivalente, on adopte souvent une notation numérique en associant 1 à True et 0 à False.
1. Opérateurs booléens de base
Dans le cours sur les bases de Python, nous avons déjà vu les opérateurs or, and et not.
Opérateur OU
Soit \(a\) et \(b\) deux expressions :
\[a\textrm{ OU }b\textrm{ est vrai }\iff a\textrm{ est vrai ou }b\textrm{ est vrai}\]
Table de vérité de l’opérateur OU :
| \(a\) | \(b\) | \(a\) OU \(b\) |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
En logique l’opérateur OU est inclusif : cela signifie que \(a\) OU \(b\) est vrai aussi lorsque \(a\) est vrai et \(b\) est vrai. Dans la langue courante, le mot ou est le plus souvent exclusif : dans un menu, par exemple “fromage ou dessert” ne permet pas de prendre les deux.
Opérateur ET
Soit \(a\) et \(b\) deux expressions :
\[a\textrm{ ET }b\textrm{ est vrai }\iff a\textrm{ est vrai et }b\textrm{ est vrai}\]
Table de vérité de l’opérateur ET :
| \(a\) | \(b\) | \(a\) ET \(b\) |
|---|---|---|
| 1 | 1 | 1 |
| 1 | 0 | 0 |
| 0 | 1 | 0 |
| 0 | 0 | 0 |
Opérateur NON
Soit \(a\) une expression :
\[(\textrm{NON }a)\textrm{ est vrai }\iff a\textrm{ est faux}\]
Table de vérité de l’opérateur NON :
| \(a\) | NON \(a\) |
|---|---|
| 1 | 0 |
| 0 | 1 |
2. Expressions booléennes
Les opérateurs de base peuvent être combinés pour formuler des expressions booléennes plus complexes. Pour éviter des problèmes d’interprétation, il est préférable d’utiliser des parenthèses pour marquer les priorités.
Compléter la table de vérité ci-dessous :
| \(a\) | \(b\) | NON \(a\) | NON \(b\) | (NON \(a\)) ET (NON \(b\)) | NON((NON \(a\)) ET (NON \(b\))) | \(a\) OU \(b\) |
|---|---|---|---|---|---|---|
| 1 | 1 | |||||
| 1 | 0 | |||||
| 0 | 1 | |||||
| 0 | 0 |
Que peut-on constater ?
3. Le ou exclusif
Le OU logique étant inclusif, on définit un opérateur spécifique pour le ou exclusif, appelé opérateur XOR.
Soit \(a\) et \(b\) deux expressions :
\[a\textrm{ XOR }b\textrm{ est vrai }\iff (a\textrm{ est vrai et }b\textrm{ est faux})\textrm{ ou }(a\textrm{ est faux et }b\textrm{ est vrai})\]
Table de vérité de l’opérateur XOR :
| \(a\) | \(b\) | \(a\) XOR \(b\) |
|---|---|---|
| 1 | 1 | 0 |
| 1 | 0 | 1 |
| 0 | 1 | 1 |
| 0 | 0 | 0 |
En Python, l’opérateur xor n’existe pas. Le ou exclusif est noté ^.
>>> True ^ False
True