Lire, corriger et compléter une fonction d'écart type
Exercice de TD · niveau 3 (difficile) · sciences numériques et technologie (seconde), chapitre 5 — Les fonctions · Lire une fonction statistique
Énoncé
Cette fonction devrait renvoyer l'écart type d'une liste de valeurs. Elle renvoie un résultat faux.
def ecart_type(valeurs):
m = moyenne(valeurs)
total = 0
for x in valeurs:
total = total + (x - m)
return (total / len(valeurs)) ** 0.5
- Tester sur
[4, 6, 8, 10, 12](le résultat attendu est ). - Trouver l'erreur et la corriger.
- Expliquer pourquoi le résultat obtenu ne pouvait pas être bon, sans même connaître la bonne valeur.
Corrigé
1. La fonction renvoie 0.0, ou lève une erreur selon les données.
2. Le carré manque. La ligne d'accumulation doit être :
total = total + (x - m) ** 2
Avec cette correction, on obtient bien .
3. On pouvait le savoir sans calculer la bonne valeur. La somme des écarts à la moyenne est toujours nulle : c'est une propriété de la moyenne, les écarts positifs compensant exactement les négatifs. La fonction fautive renvoyait donc quelles que soient les données — y compris pour une série très dispersée.
C'est le meilleur des tests : un résultat constant là où l'on attend une variation. Il suffisait d'essayer deux listes différentes pour voir le défaut, sans jamais avoir à calculer l'écart type à la main. Et c'est aussi la raison mathématique pour laquelle on élève au carré : sans cela, l'indicateur ne mesurerait rien.
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.