sciences numériques et technologie (seconde) · Chapitre 3 · Exercice de TD
Le tarif du musée, et l'ordre des elif
Instructions conditionnelles · La structure if / elif / else · niveau 3 (difficile)
Énoncé
Un musée applique ces tarifs : gratuit en dessous de ans, € de à ans, € de à ans, € à partir de ans.
- Écrire une fonction
tarif(age)qui renvoie le prix. - Un élève propose la version ci-dessous. Trouver son défaut et le corriger.
def tarif(age):
if age >= 6:
return 5
elif age >= 18:
return 12
elif age >= 65:
return 8
else:
return 0Corrigé
1.
def tarif(age):
if age < 6:
return 0
elif age <= 17:
return 5
elif age <= 64:
return 12
else:
return 8
print(tarif(4), tarif(10), tarif(30), tarif(70)) # 0 5 12 8
2. Le défaut est l'ordre des tests. La condition age >= 6 est vraie pour tout le monde au-delà de ans : un adulte de ans y répond déjà True et se voit facturer €. Les deux elif suivants ne sont jamais atteints — c'est du code mort.
La règle : quand les conditions sont emboîtées (chacune impliquant la précédente), il faut les écrire de la plus restrictive à la plus large. Ici, en gardant les >=, il faut partir du plus grand âge :
def tarif(age):
if age >= 65:
return 8
elif age >= 18:
return 12
elif age >= 6:
return 5
else:
return 0
Le cas ans révèle le bogue, pas le cas ans : c'est en testant une valeur de chaque tranche qu'on le trouve.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 14 autres exercices corrigés dans ce chapitre, et 23 à chercher avec le tuteur
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre et la correction filmée du TD : 2 minutes sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.