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égorie
dans la console avec un argument pour renvoyer la chaîne de caractèressenior
.Solution
Pour que le bloc
else
s'exécute il faut appeler la fonctioncatégorie
avec 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
elif
pour ajouter une catégoriejeune
qui s'applique jusqu'à 25 ans inclus.Inspire toi de la catégorie
adulte
et 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 unelif
pour 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égorie
pour prendre en compte ce changement.Solution
Le bloc
else
est 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
elif
pour 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 == 18
Pour prendre en compte le pass culture pour les jeunes de 18 ans il faut vérifier
age == 18
avant de vérifier siage <= 25
doncdef 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'