5.2. Tests

5.2.1. Branchements conditionnels

On souhaite exécuter un bloc d’instructions uniquement si une condition est remplie. On emploie pour cela le mot-clé if suivie d’une expression à valeur booléenne.

In [1]: a = 4       # Changer la valeur de a pour comprendre ce qui se passe

In [2]: if a % 2 == 0 :
   ...:     print('a est pair')
   ...: 
a est pair

Si on veut introduire en plus un bloc d’instructions à exécuter lorsque la condition n’est pas remplie, on emploie le mot-clé else.

In [3]: a = 5

In [4]: if a % 2 == 0:
   ...: ...  print('a est pair')
   ...: else:
   ...: ...  print('a est impair')
   ...: 
a est impair

Si on veut envisager plusieurs tests successifs, on emploie le mot-clé elif (conctraction de else if).

In [5]: a = 5

In [6]: if a % 2 == 0:
   ...: ...  print('a est pair')
   ...: elif a > 3:
   ...: ...  print('a est impair et strictement supérieur à 3')
   ...: 
a est impair et strictement supérieur à 3

On peut évidemment combiner if, elif et else.

In [7]: a = 1

In [8]: if a % 2 == 0:
   ...: ...  print('a est pair')
   ...: elif a > 3:
   ...: ...  print('a est impair et strictement supérieur à 3')
   ...: else:
   ...: ...  print('a est impair et inférieur ou égal à 3')
   ...: 
a est impair et inférieur ou égal à 3

5.2.2. Expression conditionnelle

On appelle expression conditionnelle une expression de la forme suivante.

<expression1> if <condition> else <expression2>

Cette expression est évaluée comme <expression1> si <condition> est vraie et comme <expression2> sinon [1].

In [9]: a = 0

In [10]: 'papa' if a == 0 else 'maman'
Out[10]: 'papa'

In [11]: 'papa' if a == 1 else 'maman'
Out[11]: 'maman'

Ce type d’expression peut également accomplir une action plutôt que de renvoyer un objet.

In [12]: li = [1, 2, 3]

In [13]: a = 0

In [14]: li.append('toto') if a == 0 else li.append('titi')

In [15]: li
Out[15]: [1, 2, 3, 'toto']

# En fait, l'expression est évaluée à None
In [16]: print(li.append('toto') if a == 1 else li.append('titi'))
None

In [17]: li
Out[17]: [1, 2, 3, 'toto', 'titi']