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
expression
a pour valeurTrue
, le blocbloc_instructions_1
est exécuté, et le blocbloc_instructions_2
est ignoré. - Lorsque
expression
a pour valeurFalse
, le blocbloc_instructions_1
est ignoré, et le blocbloc_instructions_2
est 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_3
existe, 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
expression1
a pour valeurTrue
, le blocbloc_instructions_1
est exécuté, et les blocsbloc_instructions_2
etbloc_instructions_3
sont ignorés. - Lorsque
expression1
a pour valeurFalse
:- le bloc
bloc_instructions_1
est ignoré, - si
expression2
a pour valeurTrue
, le blocbloc_instructions_2
est exécuté, et le blocbloc_instructions_3
est ignoré ; - si
expression2
a pour valeurFalse
, le blocbloc_instructions_2
est ignoré, et le blocbloc_instructions_3
est 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_4
existe, 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.