Une variable de type boolean
peut prendre deux valeurs :
True
ou False
.
print(type(True))
print(type(False))
Affichage obtenu :
<class 'bool'> <class 'bool'>
Les booléens
boolean
Une variable de type boolean
peut prendre deux valeurs :
True
ou False
.
print(type(True))
print(type(False))
Affichage obtenu :
<class 'bool'> <class 'bool'>
Le cas le plus fréquent d'utilisation d'un booléen est un usage implicite dans les tests de comparaison.
Les comparaisons de nombres s'effectuent à l'aide des symboles suivants.
test | symbole |
---|---|
Est-ce égal ? | == |
Est-ce distinct ? | != |
Est-ce strictement inférieur à ? | < |
Est-ce strictement supérieur à ? | > |
Est-ce inférieur ou égal à ? | <= |
Est-ce supérieur ou égal à ? | >= |
a = 2
b = 3
c = 5
print( a == b)
print( a+b == c)
print( a < b )
print( a <= c)
print( type( a == c) )
Affichage obtenu :
False True True True <class 'bool'>
float
Le test d'égalité ==
est bien adapté pour un test entre deux
entiers int
ou entre deux chaînes de caractères str
.
Mais, du fait de la représentation des nombres en machine,
il est mal adapté à la comparaison de deux float
. Exécutez
le code ci-dessous pour vous en convaincre :
On rappelle que ce problème est incontournable, quel que ce soit le langage de programmation. Il arrive que des choix de programmation puissent masquer partiellement ce problème. Celui-ci a déjà été souligné et rapidement expliqué dans le corrigé de l'exercice n°1 de cette page.
float
Pour tester l'égalité de deux réels, on est donc contraint de tester en
fait la proximité des deux float
qui les représentent.
Tout cela au risque, évidemment, de conclure à l'égalité alors que les
réels représentés ne le sont pas. C'est un risque important et nous
connaissons déjà tous la difficulté qu'ont une majorité d'élèves à
l'appréhender (confusion classique entre un nombre et l'approximation
affichée par la machine, voire avec une approximation quelconque...).
Python offre une fonction
math.isclose()
pour tester cette proximité :
from math import isclose
a = 2 + 3.001
b = 5.001
print( isclose(a,b) )
Le code ci-dessous renvoie l'affichage :
True
Cette fonction isclose()
peut être paramétrée pour accepter une plus ou
moins grande proximité (relative ou absolue) entre les float
. Le règlage par défaut devrait
convenir dans les situations pour la classe.
La
documentation
Python pour isclose()
.