4.1 Tests et conditions
Jusqu’à présent nos programmes exécutaient toutes leurs instructions sans exception, ce qui ne laisse guère d’interactivité. Les instructions conditionnelles permettent à notre programme d’exécuter, ou pas, une partie de ses instructions en fonction de certains critères exprimés sous forme d’expressions logiques (booléennes).
x égale à y | x inférieur à y | x inférieur ou égal à y | x supérieur à y | x supérieur ou égal à y | x différent de y |
---|---|---|---|---|---|
x == y | x < y | x <= y | x > y | x >= y | x != y |
Attention : il ne faut pas confondre :
- l’opérateur de comparaison == pour tester l’égalité de deux valeurs.
- l’opérateur d’affectation = utilisé pour affecter une valeur à une variable.
4.2 Syntaxe des structures conditionnelles
1 2 3 4 5 |
a = 25 if ( a <= 17 ) : print ("Vous êtes mineur") else : print ("Vous êtes majeur") |
- L’expression placée entre parenthèses est ce que nous appellerons désormais une condition. Notons que la condition a été placée entre parenthèses pour améliorer la lisibilité, mais que celles-ci ne sont pas indispensables.
- Le « : » après la condition signifie alors. Notons que la ligne suivante est indentée (c’est-à-dire en retrait) par rapport à la précédente (4 espaces). Contrairement à d’autres langages il n’y a pas de symbole marquant le début et la fin du alors, c’est l’indentation qui joue ce rôle.
- Si la condition est vraie, alors l’instruction indentée après le ‘ : ‘ est exécutée. Si la condition est fausse, rien ne se passe (ou encore le programme passe à la suite, s’il y a une suite).
- Dans le cas où la condition n’est pas satisfaite, nous pouvons programmer une exécution alternative à l’aide de l’instruction else ( »sinon », en anglais).
- Nous pouvons obtenir encore plus d’alternatives avec l’instruction elif (contraction de » else if ») :
1 2 3 4 5 6 7 |
a = 16 if ( a <= 17 ) : print ("Vous êtes mineur") elif ( a == 18 ) : print("Vous venez juste d'atteindre la majorité") else : print ("Vous êtes majeur") |
- Note : le même résultat aurait pu être obtenu avec le programme suivant :
1 2 3 4 5 6 7 |
a = 16 if ( a <= 17 ) : print ("Vous êtes mineur") if ( a == 18 ) : print("Vous venez juste d'atteindre la majorité") if ( a > 18 ) : print ("Vous êtes majeur") |
Quel est l’intérêt selon vous d’utiliser plutôt un elif et un else ?
Attention :
- à ne pas oublier les deux points : qui signifie alors en fin de ligne du if, elif, else
- à l’indentation des blocs
Exemple : Tester et expliquer le fonctionnement des scripts suivants :
Exercice : Mention Bac
Au baccalauréat, un candidat est :
-
- Refusé si sa moyenne est inférieure stricte à 8.
- Convoqué à l’oral de rattrapage si sa moyenne est comprise entre 8 et 10 (exclu).
- Admis avec mention passable si sa moyenne est comprise entre 10 et 12 (exclu).
- Admis avec mention assez bien si sa moyenne est comprise entre 12 et 14 (exclu).
- Admis avec mention bien si sa moyenne est comprise entre 14 et 16 (exclu).
- Admis avec mention très bien si sa moyenne est supérieure à 16.
Afin d’automatiser l’attribution des mentions, le Recteur d’académie vous commande un logiciel 07_mention.py qui :
-
- demande à l’utilisateur la moyenne obtenue au baccalauréat.
- renvoie si le candidat est refusé, convoqué ou admis ainsi que la mention le cas échéant.
Exercice : Maximum de 3 nombres.
Écrire un programme 08_maximum.py qui prendra en entrée trois nombres réels a, b et c et qui renverra le maximum.
Contrainte d’efficacité :
vous n’avez le droit qu’à deux if pour traiter cet exercice, commencer par compléter l’algorithme ci-dessous.