Programmer en Python en 2nde

Les booléens

Crédits

Toute la structure html/css/js et une grande partie du contenu ont été réalisés par Nicolas Buyle-Bodin professeur au lycée Lacassagne, avec l'aide de Jean-Manuel Mény, professeur au lycée de la plaine de l'Ain. Ils ont travaillé pendant plusieurs centaines d'heures pour créer un site de formation à destination des enseignants du secondaire de l'académie de Lyon d'une grande qualité visible sur le portail Mathématiques du site académique. Ils ont eu la gentillesse de placer leur code source sous licence Creative Commons BY-NC-SA Respect de la Paternité - Pas d'utilisation commerciale - Partage des conditions initiales à l'identique..

Nous les en remercions chaleureusement.

Le type 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'>

Les tests

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. On prend comme référence l'expression à gauche du symbole :

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'>

Égalité de deux 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 :


		
		

Ce problème est incontournable, quel que ce soit le langage de programmation.

  • Une fonction Python pour tester l'égalité de deux nombre décimaux qui correspondent au type float en Python.

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