6 Conditions
Souvent, en fonction de l’évaluation d’une expression, on désire réaliser une opération plutôt qu’une autre. Par exemple, lorsqu’on créé une nouvelle variable dans une analyse statistique, et que cette variable prend ses valeurs en fonction d’une autre, on peut être amené à utiliser des instructions conditionnelles : “si la valeur est inférieur à \(x\), alors… sinon, …”.
Dans ce court chapitre, nous regardons comment rédiger les instructions conditionnelles.
6.1 Les instructions conditionnelles if
L’instruction conditionnelle la plus simple que l’on peut rencontrer est if
. Si et seulement si une expression est évaluée à True
, alors une instruction sera évaluée.
La syntaxe est la suivante :
if expression:
instruction
Les lignes après les deux points (:
) doivent être placées dans un bloc, en utilisant un taquet de tabulation.
Un bloc de code est un regroupement d’instructions. Des codes imbriqués indentés à la même position font partie du même bloc :
ligne du bloc 1
ligne du bloc 1
ligne du bloc2
ligne du bloc2
ligne du bloc1
Dans le code ci-dessous, nous définissons une variable x
contenant l’entier \(2\). L’instruction suivante évalue l’expression x == 2
(cf. Section @ref(#operateurs-comparaison) pour des rappels sur les opérateurs de comparaison). Si le résultat de cette expression est Vrai
, alors le contenu du bloc est évalué.
x = 2
if x == 2:
print("Hello")
## Hello
Si on change la valeur de x
de manière à ce que l’expression x == 2
retourne False
:
x = 3
if x == 2:
print("Hello")
À l’intérieur du bloc, on peut écrire plusieurs instructions qui seront évaluées si l’expression est True
:
x = 2
if x == 2:
y = "Hello"
print(y + ", x vaut : " + str(x))
## Hello, x vaut : 2
Lorsqu’on rédige son code, il peut-être pratique d’utiliser des instructions conditionnelles if
pour évaluer ou non certaines parties du code. Par exemple, quand on régide un script, il arrive des moments où nous devons réévaluer le début, mais que certaines parties ne nécessitent pas d’être réévaluées à chaque fois, comme des sorties graphiques (ce qui prend du temps). Il est possible de commenter ces parties de codes ne nécessitant pas une nouvelle évaluation, ou alors on peut les placer dans un bloc conditionnel :
- au début du script, on créé une variable
graph = False
; - avant de créer un graphique, on le place dans un bloc
if graphe:
if graphe:
en modifiant à sa guise la variable graph
.
6.2 Les instructions conditionnelles if-else
Si la condition n’est pas vérifiée, on peut proposer des instructions à effectuer, à l’aide des instructions if-else
.
La syntaxe est la suivante :
if expression:
instructions
else:
autres_instruction
Par exemple, admettons qu’on veuille créer une variable de chaleur prenant la valeur chaud
si la valeur de la variable temperature
dépasse 28 degrés C, froid
sinon. Admettons que la température est de 26 degrés C :
temperature = 26
chaleur = ""
if temperature > 28:
chaleur = "chaud"
else:
chaleur = "froid"
print("Il fait " + chaleur)
## Il fait froid
Si la température est à présent de 32 degrés C :
temperature = 32
chaleur = ""
if temperature > 28:
chaleur = "chaud"
else:
chaleur = "froid"
print("Il fait " + chaleur)
## Il fait chaud
6.3 Les instructions conditionnelles if-elif
Si la condition n’est pas vérifiée, on peut en tester une autre et alors évaluer d’autres instructions si cette seconde est vérifiée. Sinon, on peut en tester encore une autre, et ainsi de suite. On peut aussi proposer des instructions si aucune des conditions n’a été évaluée à True
. Pour ce faire, on peut utiliser des instructions conditionnelles if-elif
.
La syntaxe est la suivante :
if expression:
instructions
elif expression_2:
instructions_2
elif expression_3:
instructions_3
else:
autres_instruction
L’exemple précédent manque un peu de sens commun. Peut-on dire que lordqu’il fait 28 degrés C ou moins il fait froid ? Ajoutons quelques nuances :
temperature = -4
chaleur = ""
if temperature > 28:
chaleur = "chaude"
elif temperature <= 28 and temperature > 15:
chaleur = "tempérée"
elif temperature <= 15 and temperature > 0:
chaleur = "froide"
else:
chaleur = "très froide"
print("La température est " + chaleur)
## La température est très froide
if-elif
par rapport à écrire plusieurs instructions conditionnelles if
à la suite est qu’avec la première manière de faire, les comparaisons s’arrêtent dès qu’une est remplie, ce qui est plus efficace.
6.4 Exercice
Soit une liste nommée europe
contenant les valeurs suivantes, sous forme de chaînes de caractères : “Allemagne”, “France” et “Espagne”.
Soit une seconde liste, nommée asie
, contenant sous forme de chaînes de caractères : “Vietnam”, “Chine” et “Inde”.
L’objectif va être de créer une variable continent
qui va indiquer soit Europe
, Asie
ou autre à l’issue de l’exécution du code.
À l’aide d’instructions conditionnelles de type if-elif
, rédiger un code qui vérifie la valeur d’une variable pays
, et définit la valeur d’une autre variable nommée continent
en fonction du contenu observé dans pays
tel que :
- si la valeur de pays est présente dans la liste
europe
,continent
vaudraEurope
; - si la valeur de pays est présente dans la liste
asie
,continent
vaudraAsie
; - si la valeur de pays n’est présente ni dans
europe
ni dansasie
, la variablecontinent
vaudraAutre
.
Pour ce faire :
- Créer les deux listes
europe
etasie
ainsi que la variablepays
(valant “Espagne”) et la variablecontinent
(initiée avec une chaîne de caractères vide). - Rédiger le code permettant de réaliser l’objectif expliqué, et afficher le contenu de la variable
continent
à l’issue de l’exécution. - Changer la valeur de
pays
àChine
puis àBrésil
et dans chacun des cas, exécuter le code rédigé dans la question précédente.