Instructions conditionnelles : généralités
Les instructions conditionnelles permettent de sélectionner le bloc d'instructions à exécuter selon la valeur d'une expression booléenne.
L'instruction if
La syntaxe de l'instruction if est :
if expression:
bloc_instructions_1
bloc_instructions_2
expression a pour valeur True ou False. Il s'agit de l'expression de la clause if.
Si expression a pour valeur True, le bloc bloc_instructions_1 est exécuté, sinon, il est ignoré.
Dans tous les cas, si le bloc bloc_instructions_2 existe, il est exécuté ensuite.
Exemple : l'expression de la clause if a pour valeur True
nb = 174
if nb % 2 == 0:
print(nb, "est un nombre pair")
print("fin des tests")
174 est un nombre pair
fin des tests
nb % 2 == 0 est une expression qui vaut True lorsque nb vaut 174. L'instruction print(nb, "est un nombre pair") est exécutée.
Exemple : l'expression de la clause if a pour valeur False
nb = 181
if nb % 2 == 0:
print(nb, "est un nombre pair")
print("fin des tests")
fin des tests
nb % 2 == 0 est une expression qui vaut False lorsque nb vaut 181. L'instruction print(nb, "est un nombre pair") est ignorée.
L'instruction if … else
La syntaxe de l'instruction if … else est :
if expression:
bloc_instructions_1
else :
bloc_instructions_2
bloc_instructions_3
expression a pour valeur True ou False.
- Lorsque
expressiona pour valeurTrue, le blocbloc_instructions_1est exécuté, et le blocbloc_instructions_2est ignoré. - Lorsque
expressiona pour valeurFalse, le blocbloc_instructions_1est ignoré, et le blocbloc_instructions_2est exécuté.
On exécute donc soit le bloc bloc_instructions_1, soit le bloc bloc_instructions_2, mais jamais les 2.
- Dans tous les cas, si le bloc
bloc_instructions_3existe, il est exécuté ensuite.
Exemple :
nb = 5
if nb % 2 == 0:
print(nb, "est un nombre pair")
else :
print(nb, "est un nombre impair")
5 est un nombre impair
nb % 2 == 0 est une expression qui vaut False lorsque nb vaut 5. L'instruction print(nb, "est un nombre pair") est ignorée mais print(nb, "est un nombre impair") est exécutée.
L'instruction if … elif … else
Lorsque l'on souhaite disposer de plus d'une alternative, l'instruction if … elif … else permet de conditionner l'exécution de plusieurs blocs d'instructions par la valeur de plusieurs expressions booléennes.
elif est équivalent à else if. On peut ajouter autant de clauses elif que nécessaires.
La syntaxe de l'instruction if … elif … else est :
if expression1:
bloc_instructions_1
elif expression2 :
bloc_instructions_2
else:
bloc_instructions_3
bloc_instructions_4
expression1 et expression2 ont pour valeur True ou False.
- Lorsque
expression1a pour valeurTrue, le blocbloc_instructions_1est exécuté, et les blocsbloc_instructions_2etbloc_instructions_3sont ignorés. - Lorsque
expression1a pour valeurFalse:- le bloc
bloc_instructions_1est ignoré, - si
expression2a pour valeurTrue, le blocbloc_instructions_2est exécuté, et le blocbloc_instructions_3est ignoré ; - si
expression2a pour valeurFalse, le blocbloc_instructions_2est ignoré, et le blocbloc_instructions_3est exécuté.
- le bloc
On exécute donc soit le bloc bloc_instructions_1, soit le bloc bloc_instructions_2, soit le bloc bloc_instructions_3, mais toujours un seul parmi les 3.
- Dans tous les cas, si le bloc
bloc_instructions_4existe, il est exécuté ensuite.
Exemple :
nb = 178
if nb % 10 == 0:
print(nb, "est un multiple de 10")
elif nb % 5 == 0:
print(nb, "est un multiple de 5, mais pas de 10")
elif nb % 2 == 0:
print(nb, "est un multiple de 2, mais pas de 10")
else :
print(nb, "n'est ni un multiple de 2, ni un multiple de 5")
178 est un multiple de 2, mais pas de 10
nb % 10 == 0 est une expression qui vaut False lorsque nb vaut 178.
L'instruction print(nb, "est un multiple de 10") est ignorée.
nb % 5 == 0 est une expression qui vaut False lorsque nb vaut 178.
L'instruction print(nb, "est un multiple de 5, mais pas de 10") est aussi ignorée.
nb % 2 == 0 est une expression qui vaut True lorsque nb vaut 178.
L'instruction print(nb, "est un multiple de 2, mais pas de 10") est donc exécutée.