CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Python tri de liste par sélection, besoin d'aide

Risichiasse
Risichiasse
Niveau 8
31 octobre 2019 à 18:15:27

Bonsoir,
J'essaie de faire une fonction de tri par sélection d'une liste pour la trier dans l'ordre croissant (l'exerice me demande de le faire en faisant appel à une fonction qui renvoie l'indice le plus bas de la liste et une fonction qui echange 2 éléments)
Je ne comprend pas pourquoi cela me renvoie la liste de départ :(
Merci pour votre aide :hap:

https://gyazo.com/678a370e7ab772994f6bf0f568973860

Choucador
Choucador
Niveau 10
31 octobre 2019 à 19:24:27

À aucun moment tu ne modifies ta liste, encore heureux qu'elle n'ait pas changé à la fin de l'exécution du programme. En particulier, c'est le rôle de la fonction "echange" de modifier la liste, pour l'instant elle ne fait rien, elle ne parle même pas de la liste.

Tu as aussi un petit bug dans indicemin, teste la sur un autre liste, par exemple [5,4,3,2,1] pour voir

Risichiasse
Risichiasse
Niveau 8
31 octobre 2019 à 19:33:51

Merci pour ton aide mais avec la liste [5,4,3,2,1], j'ai bien l'indice minimal de 1 https://gyazo.com/1edbb04a5e8f972c65de10dbda861ffd
Et je ne comprend pas ce qu'il faudrait faire pour que "echange" parle de la liste :(

[hard]ware
[hard]ware
Niveau 14
31 octobre 2019 à 19:42:00

Ta fonction echange devrait avoir 3 paramètres.
def echange(lst, indice_a, indice_b)

Je te laisse donc réfléchir à comment modifier le corps de la fonction.
Et elle ne devrait rien retourner (sauf éventuellement un possible code d'erreur si tu veux faire ça propre)

Risichiasse
Risichiasse
Niveau 8
31 octobre 2019 à 20:25:28

D'accord merci j'ai compris, je suis sur la bonne voie

Risichiasse
Risichiasse
Niveau 8
31 octobre 2019 à 22:02:34

Je comprend pas pourquoi le 4 et le 3 sont pas à la bonne place :(
https://gyazo.com/6bbb796bd380b49c20379c4d84ff8ebf

Choucador
Choucador
Niveau 10
31 octobre 2019 à 22:36:58

Le 31 octobre 2019 à 19:33:51 Risichiasse a écrit :
Merci pour ton aide mais avec la liste [5,4,3,2,1], j'ai bien l'indice minimal de 1 https://gyazo.com/1edbb04a5e8f972c65de10dbda861ffd
Et je ne comprend pas ce qu'il faudrait faire pour que "echange" parle de la liste :(

Je crois que tu ne comprends pas bien le mot "indice". La valeur minimale du tableau est 1, son indice est 4.

Message édité le 31 octobre 2019 à 22:37:27 par Choucador
Risichiasse
Risichiasse
Niveau 8
31 octobre 2019 à 23:19:40

Le 31 octobre 2019 à 22:36:58 Choucador a écrit :

Le 31 octobre 2019 à 19:33:51 Risichiasse a écrit :
Merci pour ton aide mais avec la liste [5,4,3,2,1], j'ai bien l'indice minimal de 1 https://gyazo.com/1edbb04a5e8f972c65de10dbda861ffd
Et je ne comprend pas ce qu'il faudrait faire pour que "echange" parle de la liste :(

Je crois que tu ne comprends pas bien le mot "indice". La valeur minimale du tableau est 1, son indice est 4.

Ah autant pour moi, cependant j'aboutit à la fin à un résultat encore plus loin de la solution :hap:
https://gyazo.com/9aca7d5bf7e4a20fc72902b625e9493f

Choucador
Choucador
Niveau 10
01 novembre 2019 à 00:27:39

T'y es presque, il y a juste ton "range" qui n'est pas bon.
range(n) ça va de 0 à n-1, toi tu veux aller de debut à len(lst)-1

Risichiasse
Risichiasse
Niveau 8
01 novembre 2019 à 12:29:27

Merci j'ai enfin aboutit à mon résultat ! Et j'aurais encore une question : je suis passé au tri par insertion et dans mon exemple je ne comprend pas pourquoi on a besoin de stocker lst[i] dans une variable (ici x) :(
On peut voir que la version sans passer par le stockage dans une variable x ne fonctionne pas (contrairement à l'autre version)
https://gyazo.com/e6ef19177f78d490546c5aacb386c8c9

Grimmys
Grimmys
Niveau 19
01 novembre 2019 à 14:12:50

Salut,

C'est parce que la valeur de lst[i] tu risque de l'écraser entre temps. :ok:

y = i
while y > 0 and lst[y - 1] > lst[i]:
    lst[y] = lst[y - 1] #Ici au premier tout de boucle, y vaut i, donc i.e. tu fais " lst[i] = lst[y - 1] ", donc tu perds l'ancienne valeur de lst[i]
Risichiasse
Risichiasse
Niveau 8
01 novembre 2019 à 18:16:49

Pourtant dans les 2 cas au premier tour de boucle y vaut i, je ne comprend pas pourquoi il faut stocker lst[i] dans une variable :hap:

Grimmys
Grimmys
Niveau 19
02 novembre 2019 à 00:51:16

Bah pour conserver la valeur AVANT changement.

Truc tout con par exemple : tu veux permuter deux variables (a et b).

Tu ne peux pas faire :

a = b
b = a

Car tu commences par écraser la valeur de a par celle de b... Et donc tu ne fais remettre la valeur de b à b au final. :(

Tu dois passer par une variable intermédiaire :

c = a #On stocke pour plus tard la valeur actuelle de a
a = b #On affecte b à a
b = c #On affecte la valeur initiale de a à b

C'est exactement le même principe.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment