Annonce

Réduire
Aucune annonce.

Matrice en python

Réduire
X
 
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • Matrice en python

    Bonsoir tout le monde,

    Je viens solliciter votre aide vis-à-vis un exercice des matrices qu'il faut développer en python étant donné que je suis encore novice en programmation, ci dessous les questions:

    Pour représenter les matrices on utilise des listes contenant des listes ainsi l'affectation suivant crée une matrice 4*3
    contenant les 12 premiers entiers

    M=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]

    a-/ Définir la classe matrice et son constructeur.

    b-/ Écrire la méthode qui retourne la taille d'une matrice sous forme d'une liste on pourra écrire cela en deux autre méthodes retournant respectivement le nombre de ligne et de colonnes.

    c-/ Écrire la méthode qui permet l'addition de matrices en surchargeant l’opérateur, on vérifiera la compatibilité des matrices.


    Merci d'avance les Hackademiciens.
    L'esprit à autant besoin de livres qu'une épée de pierre à aiguiser pour conserver son tranchant.

  • #2
    Salut,

    tu m'as l'air bien parti avec tes listes. Et au final c'est quoi ta réelle question ?
    Blog personnel : www.cyrill-gremaud.ch

    Commentaire


    • #3
      Gremaudc pas mal ta blague +1

      Enfin Bref ,
      J'espère que tu a des notions en python vis à vis de tes cours car si tu cherche à te faire faire tes devoirs ici ! Perso j'essais avec toi d'avancer.

      a) une classe se traduit ainsi :
      class Nom_classe :
      Toujours le nom de la classe commence par une majuscule.
      Donc
      class M :
      ou
      class Matrice :

      une fois ceci fait on va définir le constructeur

      Ainsi : def __init__ (self,m,n) :
      m pour les lignes et n pour les colonnes

      Le tableau tiens les éléments suivants 4*3, M=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

      c'est la ou j'ai un soucis car je ne comprends pas vraiment la question

      b) En effet pour moi la si l'on prends 4*3 je dirais
      def __init__ (self,4,3) :
      car dans notre tableau on a bien 4 éléments constitués de 3 éléments chacun.
      je dirais donc :

      Code:
      class M:
         def __init__ (self,4,3): # constructeur
             self.lignes = 4
             self.colonnes = 3
             self.tableau = [[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
      # définition de la class et du constructeur base d'un tableau de matrice 4*3
             for i in range (self.lignes):
                 l = [4]
                 for j in range (self.colonnes):
                     j = [3]
                 print l
      Mais cependant mon code ne fonctionne pas vraiment , je sais que la logique est bonne mais l'application en elle même j'ai du mal.
      Si tu a des notions tu pourrais m'aider pour que l'on avance ensemble.

      c)Pour cette dernière question d'après ce que j'ai pu trouver en voila le principe :
      en fait lors de la construction on change __init__ par __add__ qui permet l'addition de Matrice.

      Code:
      def __add__ (self, autre):
          """ renvoie la somme de la matrice self et de la matrice autre"""
          if isinstance (autre, Matrice):
              if self.lignes == autre.lignes and self.colonnes == autre.colonnes:
                  m = Matrice (self.lignes, self.colonnes)
                  m.remplir (lambda i,j: self(i,j) + autre(i,j))
                  return m
              else:
                  raise ValueError ("Dimension des matrices incompatibles")
          else:
              raise ValueError("L'objet que vous voulez ajouter n'est pas une matrice")
      Je pense dans notre cas en remplaçant par M.

      Mais je cale et je pense que l'aide de Fred serais la bienvenue car la solution m'interresse également. En tous cas les Matrices en application c'est pas évident, en plus moi c'est loin tous ça et je cache pas qu'à mon âge je galère grave.

      Tiens moi au courant merci
      Dernière modification par DreAmuS, 26 novembre 2014, 13h18.

      Commentaire


      • #4
        il n'y a pas de code sur lequel s'appuyer, j'en met donc un qui irait dans le sens de l'exercice. je ne connais malheureusement pas les prérequis...

        Code:
        class matrix:
            def __init__(self, l, c):
                self.l = l
                self.c = c
                # code
            
            def __len__(self):
                '''Taille de la matrice'''
                # code
                
            def __add__(self, m):
                '''Addition avec une matrice'''
                if isinstance(m, matrix):
                    # code

        Commentaire


        • #5
          Ok pour la longueur tu passe pas __len__ , par contre sa question porte-t-elle sur afficher les arguments ou la longueur ?

          Pas évident j'ai galéré a trouver une idée directrice.

          En tous cas bravo pour ta proprosition comme toujours impeccable. En un code tu a résumé l'ensemble de l'exercice.

          Commentaire


          • #6
            Oui on voit que dans l'exercice on retourne une liste pour connaître le nombre de lignes/colonnes de la matrice, et donc on peut ajouter une méthode permettant de faire cela...

            Code:
            def size(self):
                return [self.l, self.c]
            tout simplement

            EDIT:

            Pour construire une matrice, sans faire complexe

            Code:
            >>> l = 4
            >>> c = 3
            >>> mat = []
            >>> n = 1
            >>> for i in range(l):
            ...     liste = []
            ...     for j in range(c):
            ...         liste.append(n)
            ...         n += 1
            ...     mat.append(liste)
            ... 
            >>> mat
            [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
            Dernière modification par fred, 26 novembre 2014, 17h33.

            Commentaire


            • #7
              Genial Tu lui a finis l'exo en moins de 2.

              Commentaire


              • #8
                Oui normalement,

                Bon pour compléter avec une bonne base, vite fait (il restera le c à faire)

                Code:
                class Matrix:
                    def __init__(self, l, c):
                        self.l = l
                        self.c = c
                        self.mat = self.createMatrix()
                    
                    def __len__(self):
                        return self.l * self.c
                        
                    def __add__(self, m):
                        if isinstance(m, matrix):
                            pass # à compléter
                    
                    def getSize(self):
                        return [self.l, self.c]
                    
                    def createMatrix(self):
                        mat = []
                        n = 1
                        for i in range(self.l):
                            liste = []
                            for j in range(self.c):
                                liste.append(n)
                                n += 1
                            mat.append(liste)
                        return mat
                        
                mat = Matrix(4, 3)
                print(mat.mat) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
                print(len(mat)) # 12
                print(mat.getSize()) # [4, 3]
                Dernière modification par fred, 26 novembre 2014, 18h06.

                Commentaire


                • #9
                  Tu t'arrete plus la. Avec ça il est paré direct tu lui en a fait même plus qu'il n'en faut.

                  En attendant du coup je me suis interressé aux Matrices et je me suis téléchargé une paire d'exercice afin d'en apprendre plus.

                  J'espère qu'il va te mettre un beaux lots de ThX bien mérité Fred

                  Commentaire


                  • #10
                    Merci les gars vous me sauvez la vie.

                    Envoyé par DreAmuS Voir le message
                    J'espère qu'il va te mettre un beaux lots de ThX bien mérité Fred
                    Voila le programme qui permet de donner à Fred le nombre de thanks qu'il veut

                    Code:
                    def dreamusIdee():
                    
                        msgfred = str("continuer")
                        
                        while msgfred != "stop":
                        
                            print ("Merci Fred tu me sauves la vie")
                    
                            msgfred = str(" ")
                    	
                            msgfred = input("Tu veux encore? continuer/stop: ")
                    L'esprit à autant besoin de livres qu'une épée de pierre à aiguiser pour conserver son tranchant.

                    Commentaire


                    • #11
                      On peut gérer l'affichage aussi

                      Code:
                      class Matrix:
                          def __init__(self, l, c):
                              self.l = l
                              self.c = c
                              self.mat = self.createMatrix()
                          
                          def __len__(self):
                              return self.l * self.c
                              
                          def __add__(self, m):
                              if isinstance(m, matrix):
                                  pass # à compléter
                          
                          def __str__(self):
                              res = ''
                              for line in self.mat:
                                  l = '\t'.join([str(i) for i in line])
                                  res += l + '\n'
                              return res
                          
                          def getSize(self):
                              return [self.l, self.c]
                          
                          def createMatrix(self):
                              mat = []
                              n = 1
                              for i in range(self.l):
                                  liste = []
                                  for j in range(self.c):
                                      liste.append(n)
                                      n += 1
                                  mat.append(liste)
                              return mat
                              
                      mat = Matrix(4, 3)
                      print(mat.mat) # [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
                      print(len(mat)) # 12
                      print(mat.getSize()) # [4, 3]
                      print(mat)
                      #1	2	3
                      #4	5	6
                      #7	8	9
                      #10	11	12

                      Commentaire

                      Chargement...
                      X