sciences numériques et technologie (seconde) · Chapitre 5 · Exercice de TD
Une fonction statistique complète
Les fonctions · Lire une fonction statistique · niveau 3 (difficile)
Énoncé
Écrire une fonction bilan(notes) qui renvoie, en un seul appel, le minimum, le maximum et la moyenne d'une liste de notes, sans utiliser min, max ni sum.
- Écrire la fonction et la tester sur
[12, 8, 15, 10, 17]. - Que se passe-t-il si la liste est vide ? Corriger.
- Pourquoi initialiser le minimum à la première valeur plutôt qu'à ou à ?
Corrigé
1.
def bilan(notes):
mini = notes[0]
maxi = notes[0]
total = 0
for n in notes:
if n < mini:
mini = n
if n > maxi:
maxi = n
total = total + n
return mini, maxi, total / len(notes)
print(bilan([12, 8, 15, 10, 17])) # (8, 17, 12.4)
Une fonction peut renvoyer plusieurs valeurs à la fois, séparées par des virgules ; on les récupère par a, b, c = bilan(...).
2. Sur une liste vide, notes[0] lève une IndexError, et la division par len(notes) serait de toute façon une division par zéro. Il faut traiter le cas d'abord :
if len(notes) == 0:
return None, None, None
3. C'est le point le plus important. Initialiser mini à donnerait toujours comme minimum : aucune note positive ne pourrait passer sous cette valeur. Initialiser maxi à donnerait toujours . Ces valeurs semblent raisonnables parce qu'on pense à des notes sur — mais elles encodent une hypothèse sur les données, et la fonction devient fausse dès qu'on l'applique à des températures ou à des altitudes.
Partir de la première valeur de la liste est le seul choix sûr : elle appartient aux données, donc le résultat aussi.
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.