Mozilla's getting a new look. What do you think? https://mzl.la/brandsurvey

Les structures conditionnelles

Si les programmes étaient exécutés en suivant les instructions une à une, de la première à la dernière, sans pouvoir revenir sur leurs pas, ils ne permettraient pas de faire grand chose. C'est pour cette raison qu'il existe des structures de code (appelées structures conditionnelles) qui permettent aux instructions d'emprunter différents chemins. Prenons l'exemple d'une programme de calcul très simple qui permet à un utilisateur de choisir l'opération mathématique à effectuer.

a = input("Saisissez le premier nombre : ")
b = input("Saisissez le deuxième nombre : ")
op = input("Choisissez l'opérateur (+, -, *, /) ")
if op == '+':
    somme = int(a) + int(b)
    print("La somme des nombres vaut " + str(somme))
elif op == '-':
    soustraction = int(a) - int(b)
    print("Leur différence vaut " + str(soustraction))
elif op == '*':
    prod = int(a) * int(b)
    print("Leur produit vaut " + str(prod))
elif op == '/':
    quot = int(a) / int(b)
    print("Leur quotient vaut " + str(quot))
else:
    print("L'opérateur choisi n'est pas reconnu.")

Là encore, l'exemple est plutôt dense. Analysons les différentes partie une par une.

Tout d'abord, les trois premières instructions permettent au programme de demander les valeurs des opérandes et l'opérateur à utiliser. Jusqu'ici, rien de nouveau.

Ensuite, on évalue les différentes possibilités et on calcule ce qu'il faut pour chacun des cas. Le mot-clé if (qui signifie « si » en anglais) introduit une expression conditionnelle : il s'agit d'un fragment de code qui ne sera exécuté que si la condition indiquée est vraie. La structure d'un tel bloc conditionnel est :

if [condition]:
    [faire quelque chose]

condition peut être n'importe quelle expression qui peut être évaluée à True ou False. On a souvent des conditions qui sont des comparaisons entre plusieurs quantités. Regardons comment fonctionnent ces comparaisons.

Effectuer des comparaisons

Plusieurs opérateurs peuvent être utilisés afin d'effectuer des comparaisons. Par exemple, on peut utiliser l'opérateur d'égalité symbolisé par ==. Lancez un interpréteur puis testez quelques instructions.

>>> 5 == 5
True
>>> 5 == 4
False
>>> 5 == 'coucou'
False
>>> 'coucou' == 'coucou'
True
  • Dans le premier cas, 5 est bien égal à 5, l'interpréteur indique alors que la comparaison est vraie (True signifie vrai en anglais).
  • Dans le deuxième cas, 4 est différent de 5 et l'interpréteur indique alors que la comparaison est fausse (False signifie faux en anglais).
  • Un nombre n'est pas la même chose qu'une chaîne de caractères, le résultat du troisième test est donc False.
  • Enfin, les deux chaînes testées contiennent les mêmes caractères dans le même ordre : ce sont donc les mêmes et la comparaison renvoie True.

Voici une liste des opérateurs de comparaison qui sont disponibles en Python :

== L'opérande gauche est égal à l'opérande droit.
!= L'opérande gauche est différent de l'opérande droit.
> L'opérande gauche est strictement supérieur à l'opérande droit.
>= L'opérande gauche est supérieur ou égal à l'opérande droit.
< L'opérande gauche est strictement inférieur à l'opérande droit.
<= L'opérande gauche est inférieur ou égal à l'opérande droit.

Retour aux calculs

Revenons à la structure générale d'une instruction if :

if [condition]:
    [faire quelque chose]

Nous venons de décrire la partie sur la condition, passons à la suite. Après la condition, on place deux points (:) et on passe à la ligne. Sur cette ligne, on « indente » en ajoutant un certain nombre d'espaces (ici 4). On utilisera ce nombre d'espaces pour chacune des instructions qui se situent « sous » cette condition. Ainsi, tout ce qui sera indenté avec 4 espaces sera exécuté si la condition précédente est vérifiée. Illustrons ce principe avec un exemple :

if 5 == 5:
    print("5 est égal à 5")
    print("Je le savais déjà")
print("J'ai appris quelque chose aujourd'hui :)")

Aussi bête que cet exemple puisse paraître, les deux premières instructions print ne sont exécutées que si la condition (5 == 5) vaut True. En revanche, la dernière instruction print sera exécuté quoiqu'il arrive. Prenons un autre exemple, opposé :

if 5 != 5:
    print("5 est égal à 5")
    print("Ces lignes ne seront pas affichées")
print("Celle-ci sera affichée quoiqu'il arrive :)")

Seule la dernière ligne sera affichée car elle n'est pas indentée « sous » l'instruction if.

Pour revenir à la description de notre programme de calcul : on a demandé l'opérateur à utiliser. Si l'utilisateur a saisi '+', la condition de la première instruction if sera vérifiée et les deux lignes qui suivent seront exécutées (la première effectue l'addition et la suivante affiche le résultat). Sinon, elles auront été ignorées.

Dans ce cas particuliers, les différents choix sont mutuellement exclusifs (on ne peut pas avoir saisi "+" et "*" avec un seul caractère) et on aurait pu utiliser une série d'instructions if pour notre programme. Mais il arrive parfois qu'on doive déterminer plus finement le résultat d'un enchaînement de conditions ou qu'une exécute une instruction par défaut (ici celle qui est exécutée quand l'opérateur est inconnu). Pour cela, Python fournit deux autres instructions : elif et else.

elif est utilisé lorsque la condition du précédent if n'est pas vérifié et qu'on souhaite tester une autre condition. Cette instruction permet d'indiquer un autre cas, correspondant à une seconde condition si la première n'est pas vérifiée. Si cette deuxième condition est vérifiée mais que la première ne l'est pas, ce seront les instructions indentées sous elif qui seront exécutées. elif a la même structure qu'une instruction if mais elle doit être précédé par une bloc if afin d'être utilisée.

Enfin, else permet de dire : « si aucune des conditions précédentes n'a été vérifiée, on exécutera ces instructions ». Étant donné que cette instruction traduit des éléments à exécuter par défaut, elle doit être placée à la fin de la chaîne conditionnelle (autrement dit, elle ne peut pas être suivie par un autre elif ou un autre else). Une instruction else peut tout à fait être utilisée après une instruction if s'il n'y a pas lieu d'utiliser elif. Par exemple, pour effectuer une simple vérification d'âge, on pourra utiliser le code suivant :

age = input("Quel âge avez-vous ?")
if int(age) > 18:
    print("Ok, vous pouvez entrer")
else:
    print("Revenez quand vous serez plus grand !")

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : SphinxKnight
 Dernière mise à jour par : SphinxKnight,