Problème d'appel à la fonction bubble_sort
Bonjour,
pardon de vous déranger mais j'ai un soucis. je suis entrain de rédiger un script qui doit me permettre d'effectuer un certain nombre de calcule. Je commencerai par créer une liste d'étudiant, puis un dictionnaire ayant pour clé les étudiants et pour valeur leur différents test de performance. Je dois par la suite créer une liste appeler scores et utiliser une boucle for pour extraire le score de chaque étudiant.
Mon souci est qu'il me faut écrire une fonction bubble_sort qui va me permettre de trier mes scores de maniere asc, lorsque je le fais, je n'arrive pas à appeler ma fonction.
students = ["John", "Lisa", "Mary", "Christ", "Linda", "Matt"]
test_performance = {"John":87, "Lisa":90, "Mary":75, "Christ":100, "Linda":100, "Matt":70}
scores[]## j'aimerais récupérer les valeurs dans la variable scores
for value in test_performance.value():
print(value)
def bubble_sort(scores): #cette fonction devrait me permettre de trier mon score de manière asc
sorted(scores)
je bloque à ce niveau, merci de m'aider.
Salut,
Alors j'avoue sur le sorted avec un dictionnaire c'est un peu spécial... Même moi je m'y perds quand je le refait ahah.
Si tu fais directement sorted sur le dictionnaire ça va te retourner une liste de clés triées.
Penses à utiliser sorted en python (c'est du Timsort en algo), plus efficace que bubble.
Donc voici comment tu peux faire :
def scores(students: dict):
return sorted(students.items(), key=lambda item:item[1])
test_performance = {"John":87, "Lisa":90, "Mary":75, "Christ":100, "Linda":100, "Matt":70}
print(scores(test_performance))
# sortie : [('Matt', 70), ('Mary', 75), ('John', 87), ('Lisa', 90), ('Christ', 100), ('Linda', 100)]
Par contre c'est trié, mais la sortie c'est... une liste de tuple ! Je te laisse terminer la fonction ^^
Bonjour Gabriel,
Merci pour ta solution, cependant dans le cas que je traite il me faut absolument faire une bubble sort. Et dans mes recherches j'ai finalement trouvé le script adéquat qui renvoie la liste et avec laquelle je pourrais eventuellement calculer la moyenne et dégager le max et le min. je te met ici la fonction.
def bubbleSort( scores ):
n = len( scores)
for i in range( n - 1 ) :
flag = 0
for j in range(n - 1) :
if scores[j] > scores[j + 1] :
tmp = scores[j]
scores[j] = scores[j + 1]
tscores[j + 1] = tmp
flag = 1
if flag == 0:
break
return scores
En appelant la fonction l'on obtiendra la liste triée:
scores = [87, 90, 75, 100, 100, 70]
nous allons enregistrer la liste dans une nouvelle variable
sorted_scores = bubbleSort(scores)
print(sorted_scores)
[70, 75, 87, 90, 100, 100]
Inscris-toi
(c'est gratuit !)
Tu dois créer un compte pour participer aux discussions.
Créer un compte