====== 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 ''%%tri%%'' pour 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)