Opérateurs booléens⚓︎
Certains opérateurs booléens tels que « \(et\) », « \(ou\) » et « \(non\) » existent de façon native en Python. Leurs tables de vérités sont rappelées plus bas.
Le but de cet exercice est d'écrire des fonctions mimant leur fonctionnement en n'utilisant que des tests if...elif...else
.
Astuce
On rappelle que si a
est un booléen, l'instruction if a == True:
peut-être allégée en if a:
.
Les seules structures autorisées dans cet exercice sont :
- les tests simples :
if booleen:
...
elif booleen:
...
else:
...
- les tests imbriqués :
if booleen_1:
if booleen_2:
...
- l'utilisation dans les tests de fonction déjà écrites. Par exemple :
if non(booleen):
...
Contrainte
Il est donc interdit dans cet exercice d'utiliser les opérateurs booléens natifs de Python : not
, and
, or
.
De la même façon on ne comparera pas les valeurs à l'aide de ==
, !=
, >
, ...
On s'interdira de la même façon d'utiliser la bibliothèque operator
ainsi que des conversions telles que int(a)
...
On demande d'écrire les fonctions suivantes :
non
prend en argument le booléena
et renvoieFalse
sia
vautTrue
,True
s'il vautFalse
;et
prend en argument les booléensa
etb
et ne renvoieTrue
que s'ils valent l'un et l'autreTrue
;ou
prend en argument les booléensa
etb
et renvoieTrue
dès que l'un ou l'autre vautTrue
(ou les deux) ;ou_exclusif
prend en argument les booléensa
etb
et renvoieTrue
si les deux arguments ont des valeurs différentes ;non_ou
prend en argument les booléensa
etb
et ne renvoieTrue
que s'ils valent l'un et l'autreFalse
. ;non_et
prend en argument les booléensa
etb
et ne renvoieFalse
que s'ils valent l'un et l'autreTrue
.
Exemples
>>> non(True)
False
>>> et(True, False)
False
>>> ou(True, False)
True
>>> ou_exclusif(True, True)
False
>>> non_ou(False, True)
False
>>> non_et(False, True)
True
La table de vérité de cet opérateur est :
a |
non(a) |
---|---|
False |
True |
True |
False |
La table de vérité de cet opérateur est :
a |
b |
et(a, b) |
---|---|---|
False |
False |
False |
False |
True |
False |
True |
False |
False |
True |
True |
True |
La table de vérité de cet opérateur est :
a |
b |
ou(a, b) |
---|---|---|
False |
False |
False |
False |
True |
True |
True |
False |
True |
True |
True |
True |
La table de vérité de cet opérateur est :
a |
b |
ou_exclusif(a, b) |
---|---|---|
False |
False |
False |
False |
True |
True |
True |
False |
True |
True |
True |
False |
La table de vérité de cet opérateur est :
a |
b |
non_ou(a, b) |
---|---|---|
False |
False |
True |
False |
True |
False |
True |
False |
False |
True |
True |
False |
La table de vérité de cet opérateur est :
a |
b |
non_et(a, b) |
---|---|---|
False |
False |
True |
False |
True |
True |
True |
False |
True |
True |
True |
False |
# Tests
(insensible à la casse)(Ctrl+I)