Comparaisons
On voudrait pouvoir écrire une fonction qui, étant donné les irradiances maximales et minimales d'une station spatiale et une distance au soleil, retourne un booléen indiquant si la station fonctionne correctement ou non à cette distance.
Et par chance, le langage comporte un aspect de sa sémantique qui permet de faire exactement celà : les opérateurs de comparaison.
Il y a en Python 6 opérateurs de comparaison qui agissent sur des valeurs numériques, c'est à dire des valeurs de type float
ou int
. Ils comparent toujours deux valeurs. Ils produisent tous une valeur de type bool
.
Egalité
L'opérateur ==
permet de tester l'égalité entre deux nombres.
L'expression a == b
vaut True
si a
et b
ont la même valeur numérique.
vaut False
vaut True
Inégalité
L'opérateur !=
permet de tester l'inégalité entre deux nombres.
L'expression a != b
vaut True
si a
et b
ont une valeur numérique différente.
vaut True
vaut False
Infériorité stricte
L'opérateur <
permet de tester si un nombre est strictement inférieur à un autre.
L'expression a < b
vaut True
si a
est strictement inférieur à b
.
vaut False
vaut False
vaut True
Infériorité
L'opérateur <=
permet de tester si un nombre est inférieur ou égal à un autre.
L'expression a <= b
vaut True
si a
est inférieur ou égal à b
.
vaut False
vaut True
vaut True
Supériorité stricte
L'opérateur >
permet de tester si un nombre est strictement supérieur à un autre.
L'expression a > b
vaut True
si a
est strictement supérieur à b
.
vaut True
vaut False
vaut False
Supériorité
L'opérateur >=
permet de tester si un nombre est supérieur ou égal à un autre.
L'expression a >= b
vaut True
si a
est supérieur ou égal à b
.
vaut True
vaut True
vaut False
Précédence
Les opérateurs de comparaison ont tous la même précédence, et ont tous une précédence inférieure aux opérateurs vu jusqu'à présent.
L'expression
est donc équivalente à
Encadrements
Si l'on veut si un nombre a
est compris entre b
et c
, avec b
inférieur strictement à c
, on peut réaliser un encadrement:
Cette expression vaut True
si a
est strictement supérieur à b
et strictement inférieur à c
.
Bien sûr, on peut utiliser d'autres opérateurs d'infériorité et de supériorité:
Cette expression vautTrue
si a
est supérieur ou égal à b
et strictement inférieur à c
.
Exercice : encadrement
Voici la spécification d'une fonction :
Réfléchissez aux différentes valeurs de x
qui produisent des résultats différents.
Il y a cinq cas à tester au total.
- x
plus petit que 10
- x
égal à 10
- x
entre 10 et 20 exclus
- x
égal à 20
- x
plus grand que 2O
-
Vous avez choisi peut-être d'autres valeurs.
Implémentez la fonction de l'étape 1. Servez-vous des tests pour vérifier votre résultat.
vous pouvez utiliser une expression de comparaison dans un return
:
Il faut dans notre cas utiliser un encadrement.
Retour aux stations
Exercice
Implantez la fonction suivante. Ajoutez eventuellement des tests à sa spécification :
Servez-vous de la fonction irradiance
que l'on a écrit au chapitre précédent !
Vous devrez réaliser un encadrement entre deux valeurs.
def station_compatible(ir_min, ir_max, distance):
"""ir_min, ir_max les irradiances minimales et maximales que peut supporter la stations, en watts par mètre carré.
distance la distance au soleil, en millions de kilomètres
>>> station_compatible(9800, 12000, 125)
False
>>> station_compatible(2000, 3000, 120)
True
>>> station_compatible(1000, 2000, 120)
False
"""
return ir_min <= irradiance(distance) <= ir_max