En ce momentGenshin ImpactValhallaBreath of the wildAnimal CrossingGTA 5Red dead 2
Liste des sujets
[python] besoin d'aide sur un programme
Platizor
Niveau 41
01 avril 2017 à 18:04:17
def o (l) : ....n= len (l) ....k= l[0:(n//2)] ....j=l[(n//2):n] ....m=l ....for i in range (0,(n//2)) : ........m[2*i] = k[i] ........m[2*i+1] = j[i] .....return (m) ce programme permet de mélanger une liste comme ça : de [0,1,2,3] en [0,2,1,3] et marche bien
def retour(a) : ....b=[] ....for i in range (a): pour construire la liste juste en entrant un nombre ........b=b + [i] ....c=0 compteur à 0 : compte le nombre de fois où on va appliquer o ....m=o(b) on mélange telle la fonction o ....for i in range (a) : on balaye tous les termes de la liste .........while m[i] != b[i] : pour chaque terme on vérifie s'il est identique à la liste de départ ............m=o(m) si c'est pas le cas on réapplique la fonction o (bug ici a priori) ............c= c+1
....return (c)
celui là compte le nombre de fois où on applique la fonction o pour remettre la liste dans le bon ordre, mais je pense avoir fait une erreur de débutant à un endroit puisque après 1h à tourner en rond j'ai l'impression que la commande o(m) ne s'exécute jamais... j'ai sûrement dû faire une erreur de syntaxe ou autre si quelqu'un pouvait m'aider c'est assez frustrant surtout que j'ai vraiment cherché et je vois pas... le programme me renvoie toujours c=0
Message édité le 01 avril 2017 à 18:06:49 par Platizor
MrGreez94
Niveau 10
01 avril 2017 à 18:32:00
Copie ton code sur https://pastebin.com/
Ce sera plus lisible et il y aura pas de poisson
Platizor
Niveau 41
01 avril 2017 à 20:29:20
Voilà https://pastebin.com/LfRBs0iB
MrGreez94
Niveau 10
01 avril 2017 à 22:19:49
Prends le réflexe donner des noms explicites à tes variables et fonctions. Quel est ton objectif exactement ? Avoir les nombres impair dans la première partie de ta liste et les nombres pair dans la seconde partie ?
Platizor
Niveau 41
01 avril 2017 à 23:03:29
nan en gros la 1ere fonction c'est juste pour mélanger une liste un peu bizarrement en coupant la liste en 2 moitiés.Ensuite on fait une nouvelle liste dans laquelle on enchaîne 1er terme de la 1ere moitié puis 1er terme de la 2e moitié puis 2e terme de la 1ere moitié puis 2e terme de la 2e moitié.... la 2e fonction c'est pour calculer, après avoir appliqué la 1ere fonction à une liste de "a" termes, en combien de fois en réappliquant la fonction on revient à la liste qu'on avait au départ désolé si c'est pas très bien écrit en python je suis pas pro
Message édité le 01 avril 2017 à 23:04:30 par Platizor
Platizor
Niveau 41
02 avril 2017 à 11:12:01
Bon j'ai trouvé le problème venait du faire que j'avais mis dans la "même case mémoire" mes 2 listes donc la modification de l'une entraînait la modification de l'autre. Je suis quand même étonné il me semblait avoir compris qu'il se passait ce genre de chose uniquement pour les matrices,c'est pour ça qu'il y a la commande copy()...:doute: