Tests conditionnels
Imaginons qu’à l’entrée d’une salle de spectacle, une machine qui, en fonction de l’âge des clients, elle affiche s’ils sont éligibles à une réduction ou non.
Premier scénario :
Si le client est âgé de moins de 12, le programme affiche « l’entrée est gratuite », sinon « l’entrée est payante »
Voici un organigramme qui résume cet exercice :
Le script python qui permet de réaliser ce travail est le suivant :
Une fois que l’utilisateur aura communiqué son âge, le programme passera par l’un ou l’autre chemin. La structure python qui permet d’effectuer cela est le test conditionnel réalisé avec l’instruction if.
2ème scénario
Les clients dont l’âge est supérieur à 12 ans et inférieur à 25 ans peuvent bénéficier d’une réduction de 25%. Le programme doit afficher le prix payé par le client.
L’organigramme prendra la forme suivante :
La différence entre ce scénario et le précédent est que dans celui-ci le programme a trois choix au lieu de 2. Il choisira le chemin par lequel il doit passer en fonction de l’âge du client. Voici le programme qui permet de réaliser ce cas pratique :
- age = float(input(« Quel est votre âge ? »))
- if age < 12 :
- print(« l’entrée est gratuite »)
- elif age < 25 :
- print(« Vous bénéficiez d’une réduction de 25% »)
- else:
- print(« Vous ne bénéficiez pas de réduction »)
on a donc rajouté une deuxième condition grâce à l’instruction elif, le programme ne passera dans cette deuxième instruction que si le test du premier if est faux, et ne passera dans le troisième block else que si les deux tests précédents sont tous les deux faux. Voic le résultat obtenu par ce programme pour les trois cas de figure :
Structuration de la condition if, elif, else
Les instructions de test conditionnel if elif else, permettent de construire des sortes de passerelles où le passage est possible que si le test qui permet d’accéder à cette passerelle est vrai.
- If test logique 1 :
- Code si le test 1 est vrai
- Elif test logique 2 :
- Code si test 2 est vrai
- …
- Elif test logique n :
- Code si test n est vrai
- Else :
- Code si aucun des tests précédents n’est vrai
Il est possible de n’utiliser que l’instruction if sans les deux autres. Comme il est possible de n’utiliser que if et elif, ou if et else.
Le test elif est une abréviation de else if, qui pourrait se traduire par sinon si. Il ne serait donc pas logique d’utiliser else (ou elif) tout seul sans utiliser préalablement un test initial avec l’instruction if.
Chaque ligne de test (if, elif ou else) se termine par deux points ( : ) ceci fait parti des règle du langage
Le block de code qui sera exécuté si le test est vrai est décalé vers la droite (on dit qu’il est indenté) cette indentation fait partie du langage, le programme envoie une erreur si cette règle n’est pas respectée. Les débutant dans la programmation python oublient souvent cette règle. Et l’intérêt d’utiliser un IDE comme PyCharm est que cette indentation est gérée automatiquement.
Logique combinatoire et test conditionnel
Il est possible d’utiliser la logique combinatoire dans les structures de test conditionnel. On utilisera pour cela les instructions and et or pour combiner plusieurs tests au sein de la même instruction. Voici des exemples :
- If test 1 and test 2 :
- Code si le test 1 et le test 2 sont tous les deux vrais
- If test 1 or test 2 :
- Code si le test 1 ou le test 2 est vrai
- (si l’un des deux tests est vrai le code sera exécuté)
- If (test 1 and test 2) or test 3:
- Code si test 1 et test 2 sont vrais ou si seulement le test 3 est vrai
Et on peut continuer de jouer avec plusieurs combinaisons, il faut cependant être vigilant pour choisir les tests à effectuer.
Exercice :
Faire un programme qui distribue des numéros en fonction de l’âge de l’utilisateur selon les conditions suivantes :
Condition | De 5 à 8 | 9 à 12 | 12 à 15 | 16 à 21 | 22 à 35 | 36 et plus |
Numéro salle | 1 | 2 | 3 | 4 | 2 | 3 |
je corrigerai l’exercice dans un prochain article, en attendant n’hésitez pas de partager vos remarque ou trouvailles dans les commentaires.