Bonjour,
je me permets de solliciter de l'aide pour un devoir avec Python. Je n'arrive pas à comprendre comment je dois faire.
énoncé :
Le principe du tri que veut réaliser le programmeur est le suivant. A chaque passage, tant que la liste L n'est pas vide, on ôte la valeur minimale trouvée dans la liste L et on la stocke à la suite d'une autre liste L1, vide au départ. Ainsi, L contient la liste L d'origine, triée par ordre croissant. Recopier et compléter la fonction ci-dessous.
def tri_selection(L):
L1=[]
for i in range(len(L)):
m=...
L.remove(...)
L1.append(...)
L=L1
return(L1)
J'ai essayé de compléter cet algorithme mais je n'ai pas réussi à trouver le minimum.
Voilà ce que j'ai fait :
def tri_selection(L):
L1=[]
for i in range(len(L)):
m=L1.sort(L)
parce que je sais que list.sort () veut dire par ordre croissant en python
L.remove(m)
parce que remove veut dire supprimer dans python et dans l'énoncé, il est dit qu'il faut supprimer la valeur minimale
L1.append(L)
parce qu'il faut ajouter à L1 la liste L.
L=L1
return(L1)
Mais quand j'essaie avec des valeurs, cela ne fonctionne pas.
Bonjour,
Bonjour,
énoncé faux
"Ainsi, L contient la liste L d'origine, triée par ordre croissant"
non. le résultat est dans L1
et pour l'algo :
on supprime de la liste L un élément (m) de cette liste L et on ajoute ce seul élément m à la liste L1.
et L.sort() ne donne pas le résultat que tu penses
(relire la doc)
pour trouver le plus petit élément d'une liste c'est min(L)
pas un truc pour trier la liste.
ce serait d'ailleurs une arnaque absurde d'utiliser sort() !!
vu que avec la seule ligne L.sort() c'est déja tout fini :
L=[5,1,3,7,2,4,9,6,8]
L.sort()
print(L)
*** Console de processus distant Réinitialisée ***
[1, 2, 3, 4, 5, 6, 7, 8, 9]
Merci beaucoup pour votre réponse,
effectivement dans l'énoncé c'est bien L1 et non L (mes excuses pour cette erreur).
Si je reformule : L1 est la liste déjà triée (comme mis dans l'énoncé) donc pas besoin d'utiliser sort comme je l'avais fait?
Du coup, si j'ai bien compris m=min(L) puis L.remove(m) et ensuite L1.append(m)?
Mais Python donne comme résultat "..." ?
Il semblerait qu'il y a encore quelque chose qui m'échappe? Cela semble certainement évident mais c'est la première fois que j'utilise Python.
en essayant sur un des nombreux sites de Python en ligne
def tri_selection(L):
L1=[]
for i in range(len(L)):
m=min(L)
L.remove(m)
L1.append(m)
return(L1)
print(tri_selection([4,8,5,2,9,3,1,7,6]))
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :