|
Page 5 sur 13
L'instruction IF
Que se passe-t-il si l'utilisateur donne une largeur de rectangle négative dans la question 2. de l'exercice précédent ?
Il va falloir mettre des tests en place pour éviter des réponses qui n'ont pas de sens...
Ou, dans une autre situation, on peut avoir des variables qui prennent des valeurs différentes suivant certains cas. Exemple facile, les tarifs d'entrée au cinéma :
- pour les moins de 6 ans : 3€
- entre 6 et 14 ans : 4€
- entre 14 et 18 ans : 6€
- au-dessus de 18 ans : 7,5€
L'instruction if permet de tester, et d'effectuer des instructions suivant les résultats du test.
Pour considérer le premier tarif, il faudrait dire : Si l'âge est inférieur à 6, alors le prix est de 3.
Ceci se traduit en python par :
1 2
|
if ( age < 6 ): prix = 3
|
Sauf que....il faut traiter les autres tarifs possibles. Il existe pour cela l'instruction else ( sinon ) qui traite le cas complémentaire :
1 2 3 4
|
if ( age < 6 ): prix = 3 else: prix = ????
|
Si l'âge n'est pas plus petit que 6, c'est qu'il est plus grand ( vive la logique :) ), sauf qu'il nous faut traiter plusieurs cas différents encore. Essayons avec les tranches d'âge supérieures :
1 2 3 4 5 6 7 8 9 10
|
if ( age < 6 ): prix = 3 else: if ( age < 14 ): prix = 4 else: if ( age < 18 ): prix = 6 else: prix = 7.5
|
On n'a pas besoin de faire le dernier test, car on est automatiquement dans la situation où l'âge est supérieur à 18 ans, donc l'instruction else suffit.
Le code devient beaucoup plus lourd, et là nous n'avons que deux tests, imaginez de tester toutes les possiblités lorsqu'on a 15 cas différents ...
Heureusement les langages de programmation ont prévu cela et permettent d'aller un peu plus vite grâce à l'instruction elif ( contraction de "else if" ) :
1 2 3 4 5 6 7 8
|
if ( age < 6 ): prix = 3 elif ( age < 14 ): prix = 4 elif ( age < 18 ): prix = 6 else: prix = 7.5
|
La syntaxe complète est donc :
1 2 3 4 5 6 7
|
if (condition1): instruction1 elif (condition2): instruction2 else: instruction3 # retour à la ligne pour la suite du programme
|
Si la condition 1 est vérifiée, les instructions 1 et 2 vont être effectuées, sinon, si la condition 2 est vérifiée, les instructions 3 et 4 vont être effectuées. Enfin, si aucune des conditions 1 ou 2 n'est vérifiée, c'est l'instruction 5 qui est réalisée. Encore une fois, l'indentation est primordiale.
On peut utiliser les instructions elif et else, mais elles ne sont pas obligatoires.
Une remarque importante : après la ligne contenant "if (condition1):" il faut absolument respecter l'indentation pour chaque ligne contenant une instruction, mais pas pour les lignes "elif (condition2):" et "else:".
Respecter une indentation signifie mettre des espaces pour faire apparaitre une hiérarchie dans le code.
La remarque sera la même pour les boucles qui suivent ( WHILE et FOR ).
Exercices :
- Réécrire les programmes précédents en incluant des tests afin de s'assurer qu'il n'y ait pas de problèmes, ni de réponses sans aucun sens dans le résultat des programmes.
- Ecrire un programme testant si un nombre est pair ou non.
- Comparaisons :
- Ecrire un programme qui compare deux nombres.
- Ecrire un programme qui classe trois nombres dans l'ordre croissant.
- Ecrire un menu permettant à l'utilisateur de choisir dans quel tranche d'âge il est ( 1 - 10 ans, 11 - 20 ans, etc... ), puis afficher le résultat en remerciant l'utilisateur.
- L'utilisateur donne une date au format 01/01/2009, et un programme doit lui afficher une phrase de la forme : "Aujourd'hui, nous sommes le 01 septembre 2009.
- Ecrire un programme permettant de convertir une température donnée dans les autres unités.
Les unités à considérer sont Celsius ( C ), Fahrenheit ( F ) et Kelvin ( K ) et les formules sont :


- Ecrire un programme qui, selon le choix de l'utilisateur, permet de calculer l'aire et le périmètre d'un carré, d'un rectangle, d'un triangle rectangle ( dont on connait les longueurs des côtés de l'angle droit ), d'un parallélogramme et d'un losange.
- Ecrire un programme permettant de convertir un nombre donné de secondes en années/mois/jours/heures/minutes ( on part du principe qu'il y a 30 jours dans un mois ).
|