Panthéon

On considère la fonction pantheon prenant en paramètres eleves et notes deux tableaux de même longueur, le premier contenant le nom des élèves et le second, des entiers positifs désignant leur note à un contrôle de sorte que eleves[i] a obtenu la note notes[i].
Cette fonction renvoie le couple constitué de la note maximale attribuée et des noms des élèves ayant obtenu cette note regroupés dans un tableau.

Exemple

🐍 Console Python
>>> pantheon(['a', 'b', 'c', 'd'], [15, 18, 12, 18])
(18, ['b', 'd'])
Compléter la fonction pantheon

###
# Testsbksl-nlelevespy-undnsi = ['a','b','c','d','e','f','g','h','i','j']bksl-nlnotespy-undnsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]bksl-nlassert pantheon(elevespy-undnsi, notespy-undnsi) == (80, ['c', 'f', 'h'])bksl-nlassert pantheon([],[]) == (0, [])bksl-nlbksl-nl# Autres testsbksl-nlassert pantheon(elevespy-undnsi, 10py-str[0]) == (0, ['a','b','c','d','e','f','g','h','i','j'])bksl-nlassert pantheon(elevespy-undnsi, [100, 40, 80, 60, 58, 80, 75, 80, 60, 100]) == (100, ['a', 'j'])bksl-nlassert pantheon(elevespy-undnsi, 10py-str[20]) == (20, ['a','b','c','d','e','f','g','h','i','j'])bksl-nlassert pantheon(elevespy-undnsi, [i for i in range(10)]) == (9, ['j'])bksl-nlassert pantheon(elevespy-undnsi, [i for i in range(10, 0, -1)]) == (10, ['a'])bksl-nlbksl-nlbksl-nl 5/5
def pantheon(eleves, notes):bksl-nl notepy-undmaxi = 0bksl-nl meilleurspy-undeleves = ...bksl-nlbksl-nl for i in range(...) :bksl-nl if notes[i] == ... :bksl-nl meilleurspy-undeleves.append(...)bksl-nl elif notes[i] > notepy-undmaxi:bksl-nl notepy-undmaxi = ...bksl-nl meilleurspy-undeleves = [...]bksl-nlbksl-nl return (notepy-undmaxi, meilleurspy-undeleves)bksl-nlbksl-nl# Testsbksl-nlelevespy-undnsi = ['a','b','c','d','e','f','g','h','i','j']bksl-nlnotespy-undnsi = [30, 40, 80, 60, 58, 80, 75, 80, 60, 24]bksl-nlassert pantheon(elevespy-undnsi, notespy-undnsi) == (80, ['c', 'f', 'h'])bksl-nlassert pantheon([],[]) == (0, [])bksl-nlbksl-nlbksl-nlbksl-nlbksl-nldef pantheon(eleves, notes):bksl-nl notepy-undmaxi = 0bksl-nl meilleurspy-undeleves = []bksl-nlbksl-nl for i in range(len(eleves)) :bksl-nl if notes[i] == notepy-undmaxi :bksl-nl meilleurspy-undeleves.append(eleves[i])bksl-nl elif notes[i] > notepy-undmaxi:bksl-nl notepy-undmaxi = notes[i]bksl-nl meilleurspy-undeleves = [eleves[i]]bksl-nlbksl-nl return (notepy-undmaxi, meilleurspy-undeleves)bksl-nlbksl-nlbksl-nl



Solution

Pour bien comprendre le fonctionnement de cet algorithme, avec de nouvelles affectations de la liste meilleurs_eleves, à chaque fois que l'on trouve une note meilleure, vous pouvez tester ci-dessous

###
def pantheon(eleves, notes):bksl-nl notepy-undmaxi = 0bksl-nl meilleurspy-undeleves = []bksl-nlbksl-nl for i in range(len(eleves)) :bksl-nl if notes[i] == notepy-undmaxi :bksl-nl meilleurspy-undeleves.append(eleves[i])bksl-nl elif notes[i] > notepy-undmaxi:bksl-nl notepy-undmaxi = notes[i]bksl-nl meilleurspy-undeleves = [eleves[i]]bksl-nl print(notepy-undmaxi, meilleurspy-undeleves) # Pour comprendrebksl-nlbksl-nl return (notepy-undmaxi, meilleurspy-undeleves)bksl-nlbksl-nlprint(pantheon(['a', 'b', 'c', 'd'], [15, 18, 12, 18])) # Pour testerbksl-nlbksl-nl