Partage
  • Partager sur Facebook
  • Partager sur Twitter

Créer un programme python

Sujet résolu
    18 janvier 2021 à 15:46:31

    Bonjour à tous,

    J'ai deux matrices: 

    m=[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]

    n= [0,2,30],[1,4,48],[2,1,56],[2,2,30]

    Avec ces deux matrices, je dois créer un programme qui permet de transférer les valeurs contenu dans n (c.a.d la dernière ligne de la matrice), ayant pour coordonnée les deux premières lignes de la matrice n. Donc, à la fin de programme m devra être égale à:

    m= [0,0,30,0,0],[0,0,0,0,48],[0,56,30,0,0],[0,0,0,0,0],[0,0,0,0,0].

    Pouvez vous me donner des pistes svp, j'ai testé plusieurs lignes de code mais lorsque je teste, c'est faux.

    J'ai pensé à créer une boucle for avec nb de 0 a nbColonnes-1??

    m[0][2] = n[nb][2] 1er tour de boucle avec nb = 0

    m[1][4] = n[nb][2] 2eme tour de boucle avec nb = 1

    m[2][1] = n[nb][2] 3eme nb= 2

    m[2][2] = n[nb][2] 4eme nb= 3

    bref, plus je réfléchis et plus je m'éloigne de la solution. Au début, c'était assez clair mais la je patauge...

    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      18 janvier 2021 à 15:59:24

      Ton algo a l'air correct, poste le code pour voir si tu l'as bien retranscrit en Python.
      • Partager sur Facebook
      • Partager sur Twitter

      Blond, bouclé, toujours le sourire aux lèvres...

        18 janvier 2021 à 16:50:41

        moi, je parcourrai les éléments de la liste n et sachant que la 1ère valeur de la sous liste correspond au numéro de sous liste de m, que la 2ème correspond à l'indice dans cette sous-liste et que la 3ème correspond à la valeur à mettre à la position; j'utiliserai directement ces valeurs pour initialiser le bon emplacement.
        Ton algorithme ne semble pas prendre en compte la position indiquée dans n et affecte directement la valeur à la position que tu définies "en dur"

        par exemple si n=[[1,2,30], [1,4,48],[2,1,56],[2,2,30]] (on change la liste affectée par le 1er élément de n, ton algorithme ne fonctionne pas (si je l'ai bien compris)

        • Partager sur Facebook
        • Partager sur Twitter
          19 janvier 2021 à 22:08:39

          Merci pour vos retours,

          J'avais essayé un petit bout de code, mais en l'écrivant je savais qu'un truc n'allait pas...

          Effectivement, mon algo ne prend pas en compte les coordonnées indiquées dans n, pourtant c'est le but de l'exercice :(

          Du coup, pour parcourir la liste n , je fais deux boucles for, l'une avec x de 0 à nbcolonnes -1, l'autre avec y de 0 à nblignes-1 ??

          Je suis désolé mais je ne vois pas du tout comment utiliser ses valeurs ? J'ai testé plusieurs trucs mais sans succès... Sans me donner la réponse bien sur mais est ce que tu peux m'aiguiller un peu plus stp ...

          • Partager sur Facebook
          • Partager sur Twitter
            19 janvier 2021 à 22:14:49

            Pour savoir ce qui ne va pas dans ton code, le plus facile ce serait de pouvoir le lire je pense !
            • Partager sur Facebook
            • Partager sur Twitter

            Blond, bouclé, toujours le sourire aux lèvres...

              19 janvier 2021 à 22:54:39

              Ok pas de soucis, du coup voici ou j'en suis:
              for x in range (0,C):
              for y in range (0,L):
              if m[x][y] == 0:
              x = n[x][0]
              y = n[x][1]
              m[x][y] = n[x][2]
              print("m",m)

              -
              Edité par SehAK 19 janvier 2021 à 22:57:42

              • Partager sur Facebook
              • Partager sur Twitter
                20 janvier 2021 à 2:22:35

                Tu fais des boucles sur x et y et tu redéfinis x et y dans la boucle?
                Et qu'est-ce que ça donne?
                Fait un print de x et y dans la boucle ainsi que les valeurs de m et n avec ces indices.
                • Partager sur Facebook
                • Partager sur Twitter

                Le Tout est souvent plus grand que la somme de ses parties.

                  20 janvier 2021 à 2:35:37

                  Je crois pas qu'il y ait besoin de deux boucles imbriquées pour faire ça, une seule suffit.

                  Ton code ne permet pas de le savoir : avec tes boucles, tu itères sur quelle matrice, m ou n ? Ta condition laisse penser que c'est sur m, mais ensuite tu utilises l'indice x sur la matrice n ? Ça n'a pas de sens (surtout que tu écrase la valeur de tes indices dans la boucle ensuite).

                  Je pense que tu as essayé de coder alors que la manière de résoudre le problème n'est pas claire dans ta tête.

                  Prend un bout de papier et réfléchis à la manière de résoudre le problème à la main. Comment tu fais toi ou n'importe quel autre humain pour arriver au résultat, étape par étape.

                  Ensuite tu auras les idées beaucoup plus claires.

                  Astuce : quand on écrit une boucle, on décide sur quoi on itère d'abord, sinon on se retrouve avec du code qui fait n'importe quoi.

                  • Partager sur Facebook
                  • Partager sur Twitter

                  Blond, bouclé, toujours le sourire aux lèvres...

                  Créer un programme python

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown