6.1.3 L'instruction conditionnelle if
⚓︎
L'instruction conditionnelle if
permet de soumettre l'exécution d'instructions à une condition donnée.
Cette condition sera une expression booléenne, comme pour la boucle while
.
1. Premiers exemples⚓︎
Testez les codes suivants (plusieurs fois en variant les valeurs) dans un IDE:
if
1 2 3 |
|
if else
1 2 3 4 5 |
|
imbriquer les if
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
2. La syntaxe⚓︎
L'instruction if
Syntaxe générale:
1 2 3 4 |
|
Remarques:
expression
est évaluée par Python à l'exécution du programme : elle doit renvoyer une valeur booléenne (True
ouFalse)
. En pratique, c'est souvent une égalité, une comparaison, une appartenance ou une opération booléenne (and
,or
) sur ce genre d'expressions ;- il faut terminer la ligne commençant par
if
etelse
par:
, comme pour lefor
; - les instructions à effectuer selon l'évaluation d'
expression
doivent être indentées; - le
else
est facultatif (comme au premier exemple); - en cas d'emploi du
else
, aucune expression n'est attendue.
Exemple incontournable
Pour tester si un nombre n
est divisible par un nombre d
, on teste si le reste de la division euclidienne de n
par d
est égal à 0 :
1 2 3 4 5 |
|
3. elif
et les cas multiples⚓︎
Dans les situations où l'on veut effectuer des instructions différentes selon les différentes valeurs prises par une variable, comme dans le troisième exemple, on peut imbriquer les instructions if
... else
.
Mais cela est vite long et peu lisible, et les différents niveaux d'indentation sont parfois piégeux.
Il existe alors une instruction qui contracte else
et if
: elif
(sinon si).
Le code du troisième exemple devient alors:
1 2 3 4 5 6 7 8 9 10 11 12 |
|
4. Exercices⚓︎
Exercice 1
Écrire un programme qui demande deux nombres et qui affiche le plus grand des deux.
Rappel: pour stocker dans une variable n
un nombre tapé au clavier par l'utilisateur, on utilise l'instruction:
n = int(input('Entrez un nombre'))
1 2 3 4 5 6 7 |
|
Exercice 2
Afficher tous les nombres entre 1 et 100 qui sont divisibles à la fois par 2 et par 7.
for k in range(1, 101): if k % 2 == 0 and k % 7 == 0: print(k)
Exercice 3
On calcule l'IMC (Indice de Masse Corporelle) par la formule \(I = M / T^2\) où M est la masse (en kg) d'une personne et T sa taille (en m). Selon la classification de l'OMS, une personne est en état de maigreur si son IMC est inférieur à 18 et en surpoids si son IMC est supérieur à 25.
- Écrire un programme qui demande la masse et la taille d'une personne, calcule son IMC et annonce si la personne est en état de maigreur.
- Modifier ensuite le programme pour qu'il annonce si la personne est en état de maigreur, en surpoids ou bien si son IMC est normal.
1 2 3 4 5 6 7 8 9 |
|
Exercice 4
Une année est déclarée bissextile (et compte donc 366 jours au lieu de 365) dans l'un des deux cas :
- elle est divisible par 4 mais n'est pas divisible par 100 ;
- elle est divisible par 400.
Écrire un code qui détermine si une année est bissextile ou non.
1 2 3 4 5 6 7 |
|
1 2 3 4 5 |
|
Exercice 5
Compter le nombre de voyelles de la phrase 'cet exercice est prodigieusement ennuyeux'
.
À l'aide de la fonction len
qui renvoie la longueur d'un iterable, donner ensuite le nombre de consonnes.
- Utiliser une chaine de caractères contenant toutes les voyelles et tester l'appartenance de chaque lettre à cette chaine;
- Utiliser une variable compteur.
1 2 3 4 5 6 7 8 9 10 |
|
Exercice 6
Le jeu du FizzBuzz : il s'agit de compter à partir de 1 en remplaçant certains nombres par Fizz, Buzz ou Fizzbuzz :
- si le nombre est divisible par 3, on ne le dit pas et on le remplace par Fizz.
- si le nombre est divisible par 5, on ne le dit pas et on le remplace par Buzz.
- si le nombre est divisible par 3 et par 5, on ne le dit pas et on le remplace par FizzBuzz.
- dans tous les autres cas, on donne le nombre.
Ainsi on doit obtenir : 1, 2, Fizz, 4, Buzz, Fizz, 7, 8, etc.
Écrire un code qui joue au FizzBuzz jusqu'à 50 (ou plus).
1 2 3 4 5 6 7 8 9 |
|
Variante en utilisant des variables booléennes.
1 2 3 4 5 6 7 8 9 10 11 |
|
Exercice 7
Réaliser un damier (couleurs au choix) avec pygame: