D) Trier une table
sorted(tableau)
En Python, la fonction sorted(tableau) permet de trier un tableau. Elle en renvoie une copie
— Cette fonction dispose aussi :
* d’un argument nommé key permettant de précisez selon quel critère une liste doit être triée. La valeur du paramètre key devrait être une fonction qui prend un seul argument et renvoie une clef à utiliser à des fins de tri. Cette technique est rapide car la fonction clef est appelée exactement une seule fois pour chaque enregistrement en entrée.
* Un troisième argument reverse (un booléen) permet de préciser si on veut le résultat par ordre croissant (par défaut) ou décroissant (reverse=True).
Remarque : à distinguer de la procédure de tri des listes "List.sort()" qui va modifier la liste elle-même.
Exemple : tri_nom=sorted(table,key=nom,reverse=True)
Dans l'éditeur Python créer un fichier et enregistrez-le en le nommant : traitementD.py
# Dans l'éditeur Python |
On vérifie la copie de liste, et la liste t non modifiée
# On obtient dans la console |
Questions
1) Qu'observe t-on dans le tri des chaînes de caractères ? des valeurs numériques ?
2) Extrait sujet E3C de NSI - Expliquer votre réponse
Vérifier son tri avec python pour valider votre réponse.
3) Dans le tableau notes.csv précédent, ajouter une colonne :
Nom |
Maths |
NSI |
Anglais |
Option |
Galois |
17 |
14 |
17 |
EPS |
Gauss |
20 |
12 |
8 |
Latin |
Euler |
19 |
15 |
13 |
Italien |
On voudrait trier la table selon les noms par ordre alphabétique.
import csv |
Exemple de tri par clé à réaliser
- créer une fonction qui va renvoyer la valeur de la clé ’Nom’ pour chaque ligne (du dictionnaire).
- passer la fonction en paramètre key du tri "sorted"
def nom(ligne):
|
# On obtient dans la console : le reverse a réalisé le tri inverse |
Question
Effectuer un tri par ordre alphabétique du "nom de l'option facultative" de l'élève (Latin, ...)
Pour cela modifier les éléments dans la fonction et le tri trioptfac
def opt(ligne):
print("trioptfac",trioptfac) |
Exemple pour vérification de la question 3
# On obtient dans la console [OrderedDict([('Nom', 'Galois'), ('Maths', '17'), ('NSI', '14'), ('Anglais', '17'), ('Option', 'EPS')]), OrderedDict([('Nom', 'Euler'), ('Maths', '19'), ('NSI', '15'), ('Anglais', '13'), ('Option', 'Italien')]), OrderedDict([('Nom', 'Gauss'), ('Maths', '20'), ('NSI', '12'), ('Anglais', '8'), ('Option', 'Latin')])] |
Pour les cas suivants, transformer en "entier" les valeurs du dictionnaires (exemple : return int(ligne[...])
4. Effectuer un tri selon les notes croissantes en NSI. Créer la fonction et l'appel de tri correspondant trinsi
5. Effectuer un tri selon les notes décroissantes en Anglais. Créer la fonction et l'appel de tri correspondant trienglish
Créé avec HelpNDoc Personal Edition: Environnement de création d'aide complet