Que sont les instructions « else » et « elif » ?

Effectué

Que se passe-t-il si vous souhaitez également que votre programme exécute un morceau de code lorsque votre expression de test est False ? Ou si vous souhaitez inclure une autre expression de test ? Python a d’autres mots clés que vous pouvez utiliser pour créer des instructions if plus complexes comme else et elif. Lorsque vous utilisez if, else et elif en les combinant, vous pouvez écrire des programmes complexes avec plusieurs instructions et expressions de test à exécuter.

Utiliser else

Lorsque vous utilisez une instruction if, le corps du programme s’exécute uniquement si l’expression de test est True. Pour ajouter du code à exécuter quand votre expression de test est False, vous devez ajouter une instruction else.

Adaptons un exemple de la section précédente :

a = 27
b = 93
if a >= b:
    print(a)

Dans cet exemple, si a n’est pas supérieur ou égal à b, rien ne se passe. Supposons que vous souhaitiez plutôt afficher b si l’expression de test est False :

a = 27
b = 93
if a >= b:
    print(a)
else:
    print(b)

Sortie : 93

Si l’expression de test est False, le code dans le corps de l’instruction if est ignoré et le programme continue à s’exécuter à partir de l’instruction else. La syntaxe d’une instruction if/else est toujours ainsi :

if test_expression:
    # statement(s) to be run
else:
    # statement(s) to be run

Utiliser elif

En Python, le mot clé elif correspond à la forme raccourcie de else if. L’utilisation d’instructions elif vous permet d’ajouter plusieurs expressions de test à votre programme. Ces instructions sont exécutées dans l’ordre dans lequel elles sont écrites. De cette façon, votre programme n’entrera une instruction elif que si la première instruction if est False. Par exemple :

a = 27
b = 93
if a <= b:
    print("a is less than or equal to b")
elif a == b:
    print("a is equal to b")

Sortie : a is less than or equal to b

Dans cette variante, l’instruction elif du bloc de code ne s’exécute pas, car l’instruction if est True.

La syntaxe d’une instruction if/elif ressemble à ceci :

if test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run

Combiner les instructions if, elif et else

Vous pouvez combiner les instructions if, elif et else pour créer des programmes avec une logique conditionnelle complexe. N’oubliez pas qu’une instruction elif est exécutée uniquement lorsque la condition if est false. Notez également qu’un bloc if ne peut avoir qu’un seul bloc else, mais qu’il peut avoir plusieurs blocs elif.

Examinons un exemple avec une instruction if, une instruction elif et une instruction else :

a = 27
b = 93
if a < b:
    print("a is less than b")
elif a > b:
    print("a is greater than b")
else: 
    print ("a is equal to b")    

Un bloc de code qui utilise les trois types d’instructions aura la syntaxe suivante :

if test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run
elif test_expression:
    # statement(s) to be run
else:
    # statement(s) to be run

Utiliser une logique conditionnelle imbriquée

Python prend également en charge la logique conditionnelle imbriquée, ce qui signifie que vous pouvez imbriquer des instructions if, elif et else pour créer des programmes encore plus complexes. Pour imbriquer des conditions, mettez en retrait les conditions internes. De cette façon, tout ce qui se trouve au même niveau de mise en retrait sera exécuté dans le même bloc de code :

a = 16
b = 25
c = 27
if a > b:
    if b > c:
        print ("a is greater than b and b is greater than c")
    else: 
        print ("a is greater than b and less than c")
elif a == b:
    print ("a is equal to b")
else:
    print ("a is less than b")

Ce morceau de code génère la sortie a is less than b.

La logique conditionnelle imbriquée suit les mêmes règles que la logique conditionnelle normale au sein de chaque bloc de code. Voici un exemple de syntaxe :

if test_expression:
    # statement(s) to be run
    if test_expression:
        # statement(s) to be run
    else: 
        # statement(s) to be run
elif test_expression:
    # statement(s) to be run
    if test_expression:
        # statement(s) to be run
    else: 
        # statement(s) to be run
else:
    # statement(s) to be run