ParcoursOuvrir l'appli

Projet : analyser les notes d'une classe

Python, listes et boucles · 50 min

Les raccourcis de Python

Tu as appris à tout calculer à la main avec des boucles. C'était indispensable pour comprendre. Maintenant que tu sais ce qu'elles font, voici les fonctions toutes prêtes de Python, à utiliser au quotidien :

Fonction Résultat Exemple avec n = [12, 8, 15]
sum(n) la somme 35
max(n) le plus grand 15
min(n) le plus petit 8
len(n) le nombre d'éléments 3
sorted(n) une nouvelle liste triée [8, 12, 15]
sorted(n, reverse=True) triée du plus grand au plus petit [15, 12, 8]
n.count(12) combien de fois 12 apparaît 1

Avec ça, la moyenne tient en une ligne : sum(n) / len(n).

Les raccourcis en action

Lance, puis change les notes et relance.

notes = [12, 8, 15, 9.5, 17, 11]

print("Nombre de notes :", len(notes))
print("Moyenne :", round(sum(notes) / len(notes), 2))
print("Meilleure :", max(notes))
print("Plus basse :", min(notes))
print("Triées :", sorted(notes))
print("Top 3 :", sorted(notes, reverse=True)[:3])

Le projet

Tu vas écrire un vrai petit programme d'analyse, comme le ferait un data analyst sur un tableau de notes. Il y a deux listes parallèles :

eleves = ["Awa", "Boris", "Chantal", "Didier", "Esther"]
notes  = [14,    8.5,     17,        11,       9]

Tu vas construire le rapport en plusieurs exercices : statistiques générales, la liste des élèves en difficulté, puis le nom du major de la classe. Chaque exercice est indépendant, et chacun est testé sur d'autres classes que celle de l'énoncé.

Plus tard, tu verras les dictionnaires, qui rangent ce genre de données plus proprement, puis pandas, qui fait tout ça sur des millions de lignes.

Exercice : 1. Les statistiques

Calcule :

  • moyenne : la moyenne des notes, arrondie à 2 chiffres ;
  • ecart : l'écart entre la meilleure et la plus basse note.

Puis affiche Moyenne : ... | Écart : .... Tu peux utiliser sum, len, max, min.

Voir une solution
notes = [14, 8.5, 17, 11, 9]   # donné

moyenne = round(sum(notes) / len(notes), 2)
ecart = max(notes) - min(notes)
print(f"Moyenne : {moyenne} | Écart : {ecart}")

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : 2. Les élèves en difficulté

Construis la liste en_difficulte des noms des élèves qui ont moins de 10, dans l'ordre de la liste.

Comme les listes sont parallèles, il faut parcourir les index : for i in range(len(eleves)):, puis utiliser eleves[i] et notes[i].

Voir une solution
eleves = ["Awa", "Boris", "Chantal", "Didier", "Esther"]   # donné
notes = [14, 8.5, 17, 11, 9]                            # donné

en_difficulte = []
for i in range(len(eleves)):
    if notes[i] < 10:
        en_difficulte.append(eleves[i])

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : 3. Le major de la classe

Range dans major le nom de l'élève qui a la meilleure note. max(notes) donne la note, mais pas le nom : il faut retrouver sa position.

Indice : les listes ont une méthode .index(valeur) qui donne la position de la première occurrence d'une valeur. Puis affiche Major : ... avec ....

Voir une solution
eleves = ["Awa", "Boris", "Chantal", "Didier", "Esther"]   # donné
notes = [14, 8.5, 17, 11, 9]                            # donné

meilleure = max(notes)
position = notes.index(meilleure)
major = eleves[position]
print(f"Major : {major} avec {meilleure}")

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice

Exercice : 4. Le bulletin complet

Assemble tout. Affiche, pour chaque élève, une ligne avec son nom, sa note et sa mention (« Admis » si au moins 10, « Recalé » sinon), puis le taux de réussite en pourcentage, arrondi à l'entier :

Awa : 14 (Admis)
Boris : 8.5 (Recalé)
Chantal : 17 (Admis)
Didier : 11 (Admis)
Esther : 9 (Recalé)
Taux de réussite : 60 %
Voir une solution
eleves = ["Awa", "Boris", "Chantal", "Didier", "Esther"]   # donné
notes = [14, 8.5, 17, 11, 9]                            # donné

admis = 0
for eleve, note in zip(eleves, notes):
    if note >= 10:
        mention = "Admis"
        admis += 1
    else:
        mention = "Recalé"
    print(f"{eleve} : {note} ({mention})")

taux = round(admis / len(eleves) * 100)
print(f"Taux de réussite : {taux} %")

Dans l'appli, ton code est exécuté et corrigé automatiquement. Faire l'exercice