Bonjour,
Voir déjà ici (le manuel raconte déjà plein de choses intéressantes
): http://docs.python.org/library/stdty...highlight=bool. C'est pour Python v2.7, mais il y a l'équivalent pour le Python v3.x.
Même si on ne s'en sert pas souvent explicitement, Python a un type "bool". Les 2 valeurs permises sont True et False (ce ne sont pas des chaines de caractères!). On peut créer une variable de ce type de plusieurs façons:
1 2 3 4 5 6 7 8
| a = (5>7) # donne False. On peut aussi utiliser n'importe quel opérateur de comparaison
a = True # donne True
a = bool(5) # donne True comme n'importe quelle valeur à part 0
a = bool(0) # donne False
print type(a)
<type 'bool'>
print isinstance(a, bool)
True |
Maintenant qu'on a des variables booléennes, on peut faire tous les calculs logiques qu'on veut avec les opérations de base: and, or et not:
1 2 3 4 5 6
| a = True
b = False
c = True
d = (a and b) or c
print d
True |
On peut ainsi reconstituer les tableaux logiques habituels permettant de visualiser comment 2 éléments logiques se combinent avec and et or:
1 2 3 4 5 6 7 8 9 10 11 12 13
| for i in [False, True]:
for j in [False, True]:
print i and j,
print
False False
False True
for i in [False, True]:
for j in [False, True]:
print i or j,
print
False True
True True |
Python n'a pas d'opérateur xor, mais on peut le refabriquer comme suit:
xor = lambda a, b: (not(a) and b) or (a and not(b))
On pourrait aussi utiliser l'opérateur xor binaire '^' en utilisant le fait que True est codé comme un 1 binaire et False comme un 0 binaire. Mais je préfère rester dans les purs booléens.
Avec xor, on peut fabriquer le même tableau:
1 2 3 4 5 6 7
| xor = lambda a, b: (not(a) and b) or (a and not(b))
for i in [False, True]:
for j in [False, True]:
print xor(i, j),
print
False True
True False |
Bon courage!
Partager