Plusieurs conditions avec elif
Le gérant du parc d'attraction décide d'avoir plusieurs catégories d'âge. La fonction catégorie de l'éditeur lui permet d'avoir la catégorie d'une personne en fonction de son âge à l'aide d'une
instruction conditionnelle.
Observe la présence à la ligne 4 d'un nouveau mot-clé : elif. C'est la
contraction de
else if
en anglais et signifie sinon. Il permet d'augmenter le nombre de scénarios possibles
du programme car on peut utiliser plusieurs elif.
Les conditions sont vérifiées les unes après les autres dans l'ordre du code. Si l'on exécute catégorie(10)
la variable age vaut 10. La première condition
age < 8
n'est donc pas vérifiée et le bloc indenté sous le
if
n'est pas exécuté. On passe alors à la condition suivante age < 60 qui est
vraie. Donc le bloc indenté sous le elif est exécuté et la chaîne de caractères
"adulte" est renvoyée.
- 1
Exécute le code puis appelle la fonction
catégoriedans la console avec un argument pour renvoyer la chaîne de caractèressenior.Solution
Pour que le bloc
elses'exécute il faut appeler la fonctioncatégorieavec en argument un age supérieur ou égal à 60>>> catégorie(60) senior - 2
Change la condition d'âge pour les enfants : à présent le tarif enfant s'applique jusqu'à 10 ans inclus.
Solution
On modifie la condition du
if:def catégorie(age): if age <= 10: return 'enfant' elif age < 60: return 'adulte' else: return 'senior' - 3
Actuellement entre 11 et 59 ans inclus c'est le tarif adulte qui s'applique. Utilise un
elifpour ajouter une catégoriejeunequi s'applique jusqu'à 25 ans inclus.Inspire toi de la catégorie
adulteet renvoie la chaîne de caractères"jeune"pour cette catégorie. N'oublie pas les deux points:après la comparaison.Solution
L'ordre des comparaisons est important, car dès qu'une condition est vraie le bloc indenté en-dessous (et seulement lui) est exécuté.
La condition à vérifier pour renvoyer "jeune" est
age <= 25. On utilise unelifpour ajouter cette alternative :def catégorie(age): if age <= 10: return 'enfant' elif age <= 25: return 'jeune' elif age < 60: return 'adulte' else: return 'senior' - 4
La catégorie senior s'applique désormais à partir de 66 ans inclus. Modifie la fonction
catégoriepour prendre en compte ce changement.Solution
Le bloc
elseest exécuté lorsque toutes les autres conditions sont fausses. Ici il faut modifier la condition du dernierelif. Il y a plusieurs possibilités selon qu'on utilise une inégalité stricte ou large, par exemple :def catégorie(age): if age <= 10: return 'enfant' elif age <= 25: return 'jeune' elif age < 66: return 'adulte' else: return 'senior' - 5
La région décide de financer un pass culture pour les jeunes de 18 ans. Pour eux l'accès au parc est gratuit. Modifie la fonction catégorie avec un nouveau bloc
elifpour qu'elle renvoie la chaîne de caractères"gratuit"uniquement pour les jeunes de 18 ans. Fais attention à l'ordre des blocselif.Solution
Pour vérifier qu'une personne a 18 ans on utilise la comparaison
age == 18Pour prendre en compte le pass culture pour les jeunes de 18 ans il faut vérifier
age == 18avant de vérifier siage <= 25doncdef catégorie(age): if age <= 10: return 'enfant' elif age == 18: return 'gratuit' elif age <= 25: return 'jeune' elif age < 66: return 'adulte' else: return 'senior'