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']