Qui est en tête ?
Dans un jeu en ligne, le classement montre le meilleur en haut. Pourtant, les scores arrivent dans le désordre, au fur et à mesure des parties.
Quelqu’un doit les trier. C’est le travail du programme.
Dans cette leçon, tu apprends à ranger une table selon une colonne.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Trier | Ranger des valeurs dans un ordre. | Du plus petit au plus grand |
| Croissant | Du plus petit au plus grand. | 3, 7, 9, 12 |
| Décroissant | Du plus grand au plus petit. | 12, 9, 7, 3 |
| Critère | La colonne qui décide de l’ordre. | Les points |
| Ex aequo | Deux lignes qui ont la même valeur pour le critère. | Deux élèves à 9 points |
| sorted | Le mot de Python qui rend une liste triée. | sorted([3, 1, 2]) donne [1, 2, 3] |
| Paire | Une petite liste de deux valeurs. | [12, "Léa"] |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Trier une liste
sorted(liste) rend une nouvelle liste, du plus petit au plus grand. C’est l’ordre croissant.
Avec reverse=True, elle rend l’ordre décroissant.
La liste de départ ne change pas. Pour les mots, l’ordre est celui du dictionnaire.
À toi : trier des valeurs
points = [12, 7, 15, 3, 9]
print(sorted(points))
print(sorted(points, reverse=True))
print(points) # la liste de départ n’a pas bougé
noms = ["Sofia", "Hugo", "Karim", "Inès"]
print(sorted(noms))
# Trie la liste des prix [4.5, 12, 3.2, 8].
Exemple travaillé : trier [12, 7, 15, 3, 9]
| Place | Croissant | Décroissant |
|---|---|---|
| 1 | 3 | 15 |
| 2 | 7 | 12 |
| 3 | 9 | 9 |
| 4 | 12 | 7 |
| 5 | 15 | 3 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Trier une table par une colonne
Une table, ce sont des lignes. Chaque ligne a un nom et des points. On veut trier selon les points.
Astuce : on fabrique une paire pour chaque ligne, avec le critère en premier : [points, nom].
Python compare les paires par leur première valeur. sorted range donc les lignes par points.
À toi : un classement
eleves = [
{"nom": "Léa", "points": 12},
{"nom": "Karim", "points": 7},
{"nom": "Sofia", "points": 15},
{"nom": "Hugo", "points": 3},
{"nom": "Inès", "points": 9},
]
paires = []
for eleve in eleves:
paires.append([eleve["points"], eleve["nom"]])
classement = sorted(paires, reverse=True)
for paire in classement:
print(paire[1], "a", paire[0], "points")
# Trie du plus petit au plus grand. Enlève reverse=True.
Exemple travaillé : du tableau au classement
| Élève | Paire [points, nom] | Place finale |
|---|---|---|
| Léa | [12, "Léa"] | 2 |
| Karim | [7, "Karim"] | 4 |
| Sofia | [15, "Sofia"] | 1 |
| Hugo | [3, "Hugo"] | 5 |
| Inès | [9, "Inès"] | 3 |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Contrôle rapide
À toi de jouer
Contrôle rapide
4 questionsTes réponses sont corrigées ici et ne sont pas conservées. Un compte garde tes résultats.