Adloun

Quand deux conditions se recouvrent

Exercice supplémentaire · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 3 — Instructions conditionnelles · La structure if / elif / else

Énoncé

Un site propose aux étudiants et aux adhérents. Un étudiant adhérent doit recevoir la meilleure des deux remises, sans cumul. Écrire la fonction remise(etudiant, adherent) renvoyant le taux, puis expliquer pourquoi l'ordre des tests importe.

Corrigé

def remise(etudiant, adherent):
    if adherent:
        return 0.15
    elif etudiant:
        return 0.10
    else:
        return 0.0

L'ordre encode la règle commerciale. Un if/elif ne prend qu'une branche : en plaçant adherent en premier, on garantit qu'un étudiant adhérent reçoit . Inverser les deux tests lui donnerait silencieusement — un bogue qui ne se voit que sur les clients cumulant les deux qualités, c'est-à-dire les plus rares.

Écrire deux if indépendants serait pire encore : les deux s'exécuteraient, et le second return écraserait le premier sans que rien ne le signale. Quand deux cas peuvent se recouvrir, il faut décider explicitement lequel prime — et le mieux est de l'écrire en commentaire à côté.

Les autres exercices de ce chapitre Le cours du chapitre

Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.