Adloun

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.

  1. Écrire une fonction tarif(age) qui renvoie le prix.
  2. 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 0

Corrigé

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →