Qu’est-ce qu’un booléen ?
C’est une variable qui ne peux prendre que deux valeurs : VRAI ou FAUX.
En Python, le type d’une telle variable est bool, les deux valeurs possibles sont True ou False.
Expressions booléennes
Une expression booléenne a deux valeurs possibles : True ou False.
Python attribue à une expression booléenne la valeur False si c’est :
la constante False
la constante None
une séquence ou une collection vide
une donnée numérique de valeur 0. Tout le reste vaut True.
- >>> type(False)
- <class 'bool'>
- >>> type(True)
- <class 'bool'>
- >>> False
- False
- >>> bool(None)
- False
- >>> bool(' ')
- True
- >>> bool('')
- False
- >>> bool(0)
- False
- >>> bool(156.87)
- True
Opérateurs relationnels ou de comparaison
Ce sont les opérateurs == , != , > , >= , < et <=.
* Illustration pour x = 7 et y = 17
Opérateur | Expression | Signification | Valeur |
== | x == y | Égal | 0 (faux) |
!= | x != y | Non égal | 1 (vrai) |
> | x > y | Plus grand que | 0 |
< | x < y | Plus petit que | 1 |
>= | x >= y | Plus grand ou égal à | 0 |
<= | x <= y | Plus petit ou égal à | 1 |
is | x is y | est le même objet | 0 |
is not | x is not y | n’est pas le même objet | 1 |
Cela donne dans le shell de Python :
- >>> x=7
- >>> y=17
- >>> x==y
- False
- >>> x!=y
- True
- >>> x>y
- False
- >>> x>=y
- False
- >>> x<y
- True
- >>> x<=y
- True
- >>> x is y
- False
- >>> x is not y
- True
* Illustration avec deux chaînes de caractères
- >>>a='encyclopédie1'
- >>>b='encyclopédie2'
- >>>a==b
- False
- >>>len(a)
- 13
- >>>a[:12]==b[:12]
- True
Exercices Python
1/ Écrire un programme dont la sortie dans le shell de Python est la suivante :
- >>>Entrez un entier naturel : 45
- >>>Entrez un second entier naturel : 215
- >>>
- >>> x==y a pour type <class 'bool'>
- >>>
- >>> x==y est un booléen : il est soit vrai, soit faux
- >>>
- >>>x est différent de y donc la valeur du booléen est : False
2/ Écrire un programme qui dira si
un nombre x appartient à l’intervalle [a, b]
un nombre x appartient à l’intervalle ]a, b[ U [c, d]
un nombre x appartient à l’intervalle [a, b[ ∩ ]c, d]
3/ Écrire un programme qui affiche Bon anniversaire ! si nous sommes à la date de votre anniversaire, Bonne journée sinon.
Les 3 opérateurs logiques
Les expressions avec un opérateur logique sont évaluées à True ou False.
* Le NON (négation, contraire)
p étant un booléen,
NON p = 1 - p
En Python, on appelle l’instruction not.
(NON p est noté en logique ¬p)
- >>> 2<1
- False
- >>> not 2<1
- True
Table de vérité : retrouver celle de NON p à l’aide de Python.
p | NON p | |
VRAI | FAUX | |
FAUX | VRAI |
Correction en Python :
- >>> P=[True,False]
- >>> for p in P:
- print(p,not p)
- True False
- False True
* Le OU logique (disjonction)
p et q étant deux booléens,
p or q
vaut True si p vaut True. Si p est False, l’expression est évaluée à la valeur booléenne de q
(si p est faux, retourne q, sinon retourne p).
(p OU q est noté en logique p ∨ q)
- >>> 8<9
- True
- >>> 2<1
- False
- >>> (8 < 9) or (2 < 1)
- True
Retrouver à l’aide de Python la table de vérité d’une disjonction :
p | q | p OU q | |
VRAI | VRAI | VRAI | |
VRAI | FAUX | VRAI | |
FAUX | VRAI | VRAI | |
FAUX | FAUX | FAUX |
* Le ET logique (conjonction)
p and q
vaut False si p est False. Si p est True, l’expression est évaluée à la valeur booléenne de q
(si p est faux, retourne p, sinon retourne q).
(p ET q est noté en logique p ∧ q)
- >>> 8<9
- True
- >>> 2<1
- False
- >>> (8 < 9) and (2 < 1)
- False
- >>> x=36
- >>> (x > 13) and (x < 27)
- False
- >>> x=20
- >>> (x > 13) and (x < 27)
- True
Retrouver à l’aide de Python la table de vérité d’une conjonction :
p | q | p ET q | |
VRAI | VRAI | VRAI | |
VRAI | FAUX | FAUX | |
FAUX | VRAI | FAUX | |
FAUX | FAUX | FAUX |
Aller plus loin en logique : implication, équivalence et ou exclusif
L’implication logique p ⇒ q est le booléen : NON p OU q
Dresser à l’aide de Python la table de vérité de l’implication logique.
Écrire une fonction implique(p,q) en Python qui retourne NON p OU q, p et q étant deux booléens.
L’équivalence logique p ⇔ q est le booléen : (p ⇒ q) ET (q ⇒ p)
Dresser à l’aide de Python la table de vérité de l’équivalence logique.
Écrire une fonction equivalence(p,q) en Python qui retourne (p ⇒ q) ET (q ⇒ p), p et q étant deux booléens.
* Le OU exclusif (XOR) :
soit p, soit q, mais pas les deux à la fois.
Le OU exclusif (noté XOR ou ⊕) p XOR q est le booléen : (p OU q) ET NON (p ET q).
Retrouver à l’aide de Python la table de vérité du OU exclusif :
p | q | p XOR p | |
0 | 0 | 0 | |
0 | 1 | 1 | |
1 | 0 | 1 | |
1 | 1 | 0 |
Voir une application en cryptographie
Questions :
Quel serait le message en français envoyé du futur dans le film « Le code Andromède » s’il était codé à l’aide de la clé de 7 bits K=1001110 et du OU exclusif ? [1]
Écrire une fonction xor(p,q) en Python qui retourne soit p (sous-entendu p Vrai), soit q (sous-entendu q Vrai) mais pas les deux, p et q étant deux booléens.
Récapitulatif :
Voir sur Wikipédia l’article Fonction logique
Mini-projet
À rendre par groupe.
Écrire un programme Python qui dresse les tables de vérité de NON p, p OU q, p ET q telles qu’elles sont affichées dans ce tableau :
![]() |
![]() |
![]() |
Annexe : formatage d’une chaîne de caractères : lire Apprendre à programmer avec Python3 de Gérard Swinnen page 158 : Formatage des chaînes de caractères.
Découverte des propriétés de l’Algèbre de Boole
p et q sont deux booléens.
Démontrer à l’aide d’un programme Python que :
- Règles d’addition (le OU est noté +)
p + 0 = p
p + 1 = 1
p + p = p
p + NON p = 1 - Règles de multiplication (le ET est noté . )
p . 0 = 0
p . 1 = p
p . p = p
p . NON p = 0 - Commutativité
p . q = q . p - Associativité
p . ( q + r ) = p . q + p . r
- Les lois de MORGAN
p et q sont deux booléens.
Démontrer à l’aide d’un programme Python que :
NON (p OU q) = NON p ET NON q
NON (p ET q) = NON p OU NON q
- Vérifier que (p ⇒ q) et (NON q ⇒ NON p) ont même table de vérité.
- Tautologie
p, q, r sont trois booléens.
Vérifier que [(p ⇒ q) ET (q ⇒ r)] ⇒ [p ⇒ r] est toujours vrai.
C’est la base des raisonnements en chaîne en mathématiques.
Commentaires