sciences numériques et technologie (seconde) · Chapitre 6 · Exercice de TD
Le tableau des effectifs
Listes et simulations aléatoires · Manipuler une liste · niveau 3 (difficile)
Énoncé
On dispose d'une liste de résultats de lancers de dé, par exemple L = [3, 6, 1, 4, 4, 2, 6, 5, 1, 3, 4, 2].
- Écrire une fonction
effectifs(L)qui renvoie une liste de six nombres : le nombre de , de , …, de . - Vérifier que la somme des effectifs vaut
len(L). - En déduire une fonction
frequences(L).
Corrigé
1.
def effectifs(L):
e = [0, 0, 0, 0, 0, 0] # six compteurs, un par face
for x in L:
e[x - 1] = e[x - 1] + 1 # la face x est comptée à l'indice x-1
return e
L = [3, 6, 1, 4, 4, 2, 6, 5, 1, 3, 4, 2]
print(effectifs(L)) # [2, 2, 2, 3, 1, 2]
Le décalage x - 1 est le cœur de l'exercice. Les faces vont de à , les indices de à : la face se compte à l'indice . Écrire e[x] provoquerait une IndexError dès qu'un apparaît.
2.
print(sum(effectifs(L)), len(L)) # 12 12
L'égalité est une vérification utile : chaque lancer est compté une fois et une seule. Si les deux nombres diffèrent, c'est qu'un cas a été oublié ou compté deux fois.
3.
def frequences(L):
return [e / len(L) for e in effectifs(L)]
ou, sans écriture condensée :
def frequences(L):
f = []
for e in effectifs(L):
f.append(e / len(L))
return f
L'intérêt du tableau d'effectifs est qu'il ne parcourt les données qu'une seule fois pour répondre à six questions à la fois, là où six appels à count parcourraient la liste six fois.
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.