nsi:premiere:tableau:tri:critere
Tri, Exercice : Choix d'un critère
Supposons que les éléments à trier n'ait pas un ordre évident. Par exemple supposons que notre tableau soit :
[
("chaussettes", "4NB517", 3.50),
("moutarde", "8XG356", 2.50),
("cahier", "2KL649", 2.80),
("saucisson", "1SR912", 5.65),
("crayons", "3GE416", 3.50),
("gâteaux", "8OU996", 2.80),
("bananes", "7JV824", 1.95)
]
Nous voulons trier par prix croissante et, si les prix sont les mêmes, par nom de produit.
On définit alors une fonction prix(item) qui extrait le prix d'un item donné. Par exemple :
>>> item = ("saucisson", "1SR912", 5.65)
>>> prix(item)
5.65
Cette fonction est soumise comme critère à un tri par sélection ce qui permet de trier le tableau.
Dans le code ci-dessous,
- complétez la fonction
prix, - modifiez la fonction
tripour qu'elle tienne compte du critère choisi, - exécutez pour voir si le test produit le résultat attendu.
# tri avec critère
def prix(item):
'''
item: item de la liste
exemple : item = ("saucisson", "1SR912", 5.65)
renvoie le prix de l'item
exemple : renvoie 5.65
'''
# à compléter
def tri(tab, key):
'''
tab: tableau à trier
key: fonction (item) -> valeur
tri le tableau en comparant les items selon la fonction clé
'''
# il faut modifier cette fonction pour tenir compte de key
n = len(tab)
for i in range(n-1):
i_min = i
for j in range(i+1,n):
if tab[j] < tab[i_min]:
i_min = j
if i != i_min:
tab[i_min], tab[i] = tab[i], tab[i_min]
# tests
if __name__=="__main__":
T = [
("chaussettes", "4NB517", 3.50),
("moutarde", "8XG356", 2.50),
("cahier", "2KL649", 2.80),
("saucisson", "1SR912", 5.65),
("crayons", "3GE416", 3.50),
("gâteaux", "8OU996", 2.80),
("bananes", "7JV824", 1.95)
]
print("tableau à trier =", T)
print("Exécution du tri...")
tri_par_selection(T, prix)
print("tableau trié = ", T)
nsi/premiere/tableau/tri/critere.txt · Dernière modification : de goupillwiki
