Moyenne olympique⚓︎
Le championnat d'Europe de la bourrée auvergnate va avoir lieu à Nantes cette
année. Chaque athlète reçoit une note du panel de \(n\) juges (il y en a au moins
3).
Domaine public
La note finale est calculée selon la moyenne olympique, c'est-à-dire en enlevant les deux notes extrêmes et en calculant la moyenne des \(n - 2\) notes qui restent.
Vous devez aider les organisateurs à donner la note finale en créant une fonction moyenne_bourree(notes)
où notes
est un tableau contenant les notes des juges (les notes sont des nombres entiers ou à virgule flottante entre 0 et 10).
CONTRAINTE : on n'utilisera pas les fonctions Python max
, min
, ou sum
.
Exemples
>>> notes1 = [2, -1, 2, 10, 2]
>>> moy_bourree(notes1)
2.0
>>> notes2 = [1, 1, 1, 1, 1, 1]
>>> moy_bourree(notes2)
1.0
>>> notes3 = [1, 2]
>>> moy_bourree(notes3)
AssertionError: Pas assez de juges
def moyennepy-undbourree(notes):bksl-nl ...bksl-nlbksl-nlbksl-nlnotes1 = [1.0, 2.0, 4.0, 5.0]bksl-nlnotes2 = [1.0, 1.0, 1.0, 1.0, 1.0]bksl-nlbksl-nlbksl-nlassert round(moyennepy-undbourree(notes1),1) == 3.0bksl-nlassert round(moyennepy-undbourree(notes2),1) == 1.0bksl-nlbksl-nldef moyennepy-undbourree(notes):bksl-nl nbpy-undjuges = len(notes)bksl-nl assert nbpy-undjuges > 2, "Pas assez de juges"bksl-nl mini = 10bksl-nl maxi = 0bksl-nl total = 0bksl-nl for note in notes:bksl-nl total += notebksl-nl if note < mini:bksl-nl mini = notebksl-nl if note > maxi:bksl-nl maxi = notebksl-nl return (total - mini - maxi) / (nbpy-undjuges - 2)bksl-nlbksl-nlbksl-nl
A
{{ IDE('exo_corr') }}
Pour résoudre cet exercice, il fallait rechercher les valeurs minimum et maximum, puis calculer la moyenne.
Il est possible d'utiliser trois boucle, mais la solution proposée avec une seule boucle permet de minimiser le nombres d'instructions.
En revanche, dans les deux cas, la complexité de l'algorithme reste linaire.
Z