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:
Au moment de l’exécution du script, on peut choisir de créer et exporter les graphiques des blocs 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
L’avantage d’utiliser des instructions conditionnelles 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 vaudra Europe ;
  • si la valeur de pays est présente dans la liste asie, continent vaudra Asie ;
  • si la valeur de pays n’est présente ni dans europe ni dans asie, la variable continent vaudra Autre.

Pour ce faire :

  1. Créer les deux listes europe et asie ainsi que la variable pays (valant “Espagne”) et la variable continent (initiée avec une chaîne de caractères vide).
  2. 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.
  3. 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.