Partage
  • Partager sur Facebook
  • Partager sur Twitter

correction TP OC

dictionnaire ordonné

    25 juin 2020 à 14:12:24

    Hello everyone...c'est humble que viens auprès de vous solliciter une explication de la correction d'un TP...bien sûr je l'ai fait différemment et j'essaie de comprendre cet autre façon de faire proposée par le cours OC...

    • Alors le problème est dans la représentation __repr__ de notre objet dictonnaire...
      La correction proposée est :
      def __repr__(self):
              """Représentation de notre objet. C'est cette chaîne qui sera affichée
              quand on saisit directement le dictionnaire dans l'interpréteur, ou en
              utilisant la fonction 'repr'"""
              
              chaine = "{"
              premier_passage = True
              for cle, valeur in self.items():
                  if not premier_passage:
                      chaine += ", " # On ajoute la virgule comme séparateur
                  else:
                      premier_passage = False
                  chaine += repr(cle) + ": " + repr(valeur)
              chaine += "}"
              return chaine
      Mon soucis de compréhension est au niveau de la création de la chaine. à la première itération on a : premier_passage=False(on est dans else)...on remplit notre chaine avec (clé, valeur)...à la deuxième itération premier_passage = False...on va dans le if, on place la virgule...
        Mais à la troisième c'st la mer noir. Je ne vois pas quand est_ce que premier_passage  reprend True pour continuer à remplir la chaine avec les valeurs de self.items()...Vu qu'on entre dans le if si premier_passge= False et dans else quand premier_passage=True
       
    • Partager sur Facebook
    • Partager sur Twitter
      25 juin 2020 à 14:57:05

      En fait, il n'y a que lors du 1er passage, que l'on n'ajoute pas la virgule, et à chaque autre itération, on ajoute à la chaine, les clés/valeurs après avoir mis une virgule (il suffit de bien regarder les indentations)
      • Partager sur Facebook
      • Partager sur Twitter
        25 juin 2020 à 19:22:19

        Ya plus simple :

            def __repr__(self):
                items = ", ".join(repr(key) + ": " + repr(val) for key, val in self.items())
                return "{" + items + "}"
        



        -
        Edité par thelinekioubeur 25 juin 2020 à 19:23:17

        • Partager sur Facebook
        • Partager sur Twitter
          25 juin 2020 à 22:59:36

          thelinekioubeur a écrit:

          Ya plus simple :

              def __repr__(self):
                  items = ", ".join(repr(key) + ": " + repr(val) for key, val in self.items())
                  return "{" + items + "}"
          



          intéressant et court...:)



          -
          Edité par charade 25 juin 2020 à 23:01:35

          • Partager sur Facebook
          • Partager sur Twitter
            26 juin 2020 à 9:26:35

            Encore plus court :

                def __repr__(self):
                    items = ", ".join(": ".join(map(repr, el)) for el in self.items())
                    return "{" + items + "}"
            



            • Partager sur Facebook
            • Partager sur Twitter
              26 juin 2020 à 11:59:19

              Mon problème ce n'est pas tant écrire ce code...j'ai bien sur un autre façon de faire...j'entraine à pouvoir comprendre du code fait par d'autres..
              • Partager sur Facebook
              • Partager sur Twitter

              correction TP OC

              × 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