NSI (terminale) · Chapitre 10 · Exercice d'entraînement
Déboguer le deuxième plus grand
Modularité, mise au point et tests · Erreurs, exceptions et débogage · niveau 3 (difficile)
Énoncé
Déboguer le deuxième plus grand. La fonction suivante doit renvoyer la deuxième plus grande valeur distincte d'une liste qui contient au moins deux valeurs distinctes (par exemple pour [3, 9, 7, 9]).
def deuxieme_plus_grand(t):
premier = t[0]
second = t[0]
for i in range(1, len(t) + 1):
if t[i] > premier:
second = premier
premier = t[i]
return second
- L'appel
deuxieme_plus_grand([3, 9, 7])s'interrompt avec le messageIndexError: list index out of range. Expliquer la cause et la corriger. - Une fois ce premier défaut corrigé, la fonction renvoie-t-elle le bon résultat pour
[3, 9, 7]? pour[9, 3, 7]? Identifier les deux erreurs logiques qui restent. - Écrire une version correcte et un jeu de tests qui aurait révélé chacun des défauts.
Un exercice à chercher : son corrigé n'est pas publié. Sur Adloun, le tuteur guide par questions, sans donner la réponse.