Adloun

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.

  1. Écrire la fonction et la tester sur [12, 8, 15, 10, 17].
  2. Que se passe-t-il si la liste est vide ? Corriger.
  3. 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

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 →