Forme complète (if , elif et else)

42 2 0
                                        

Les limites de la condition simple en if

La première forme de condition que l'on vient de voir est pratique mais assez incomplète.

Considérons, par exemple, une variable a de type entier. On souhaite faire une action si cette variable est positive et une action différente si elle est négative. Il est possible d'obtenir ce résultat avec la forme simple d'une condition :

>>> a = 5

>>> if a > 0: # Si a est positif

print("a est positif.")

if a < 0: # a est négatif

print("a est négatif.")

Amusez-vous à changer la valeur de a et exécutez à chaque fois les conditions ; vous obtiendrez des messages différents, sauf si a est égal à 0. En effet, aucune action n'a été prévue si a vaut 0.

Cette méthode n'est pas optimale, tout d'abord parce qu'elle nous oblige à écrire deux conditions séparées pour tester une même variable. De plus, et même si c'est dur à concevoir par cet exemple, dans le cas où la variable remplirait les deux conditions (ici c'est impossible bien entendu), les deux portions de code s'exécuteraient.

La condition if est donc bien pratique mais insuffisante.

L'instruction else

Le mot-clé else, qui signifie « sinon » en anglais, permet de définir une première forme de complément à notre instruction if.

>>> age = 18

>>> if age >= 18: # Si age est supérieur ou égal à 18

print("Vous êtes majeur.")

else: # Sinon (age inférieur à 18)

print("Vous êtes mineur.")

Je pense que cet exemple suffit amplement à exposer l'utilisation de else. La seule subtilité est de bien se rendre compte que Python exécute soit l'un, soit l'autre, et jamais les deux. Notez que cette instruction else doit se trouver au même niveau d'indentation que l'instruction if qu'elle complète. De plus, elle se termine également par deux points puisqu'il s'agit d'une condition, même si elle est sous-entendue.

L'exemple de tout à l'heure pourrait donc se présenter comme suit, avec l'utilisation de else :

>>> a = 5

>>> if a > 0:

print("a est supérieur à 0.")

else:

print("a est inférieur ou égal à 0.")

Dans votre tête : Mais le résultat n'est pas tout à fait le même, si ?

Non, en effet. Vous vous rendrez compte que, cette fois, le cas où a vaut 0 est bien pris en compte. En effet, la condition initiale prévoit d'exécuter le premier bloc d'instructions si a est strictement supérieur à 0. Sinon, on exécute le second bloc d'instructions.

Si l'on veut faire la différence entre les nombres positifs, négatifs et nuls, il va falloir utiliser une condition intermédiaire.

L'instruction elif

Le mot clé elif est une contraction de « else if », que l'on peut traduire très littéralement par « sinon si ». Dans l'exemple que nous venons juste de voir, l'idéal serait d'écrire :

- si a est strictement supérieur à 0, on dit qu'il est positif ;

- sinon si a est strictement inférieur à 0, on dit qu'il est négatif ;

- sinon, (a ne peut qu'être égal à 0), on dit alors que a est nul.

Traduit en langage Python, cela donne :

>>> if a > 0: # Positif

print("a est positif.")

elif a < 0: # Négatif

print("a est négatif.")

else: # Nul

print("a est nul.")

De même que le else, le elif est sur le même niveau d'indentation que le if initial. Il se termine aussi par deux points. Cependant, entre le elif et les deux points se trouve une nouvelle condition. Linéairement, le schéma d'exécution se traduit comme suit :

1) On regarde si a est strictement supérieur à0. Si c'est le cas, on affiche « a est positif » et on s'arrête là.

2) Sinon, on regarde si a est strictement inférieur à0. Si c'est le cas, on affiche « a est négatif » et on s'arrête.

3) Sinon, on affiche « a est nul ».

Attention : Attention : quand je dis « on s'arrête », il va de soi que c'est uniquement pour cette condition. S'il y a du code après les trois blocs d'instructions, il sera exécuté dans tous les cas.

Vous pouvez mettre autant de elif que vous voulez après une condition en if. Tout comme le else, cette instruction est facultative et, quand bien même vous construiriez une instruction en if, elif, vous n'êtes pas du tout obligé de prévoir un else après. En revanche, l'instruction else ne peut figurer qu'une fois, clôturant le bloc de la condition. Deux instructions else dans une même condition ne sont pas envisageables et n'auraient de toute façon aucun sens.

Sachez qu'il est heureusement possible d'imbriquer des conditions et, dans ce cas, l'indentation permet de comprendre clairement le schéma d'exécution du programme. Je vous laisse essayer cette possibilité, je ne vais pas tout faire à votre place non plus !

Programmer en PythonWhere stories live. Discover now