Partage
  • Partager sur Facebook
  • Partager sur Twitter

Questions/aide - TP : un dictionnaire ordonné

Sv : Cours - Apprenez à programmer en Python

    20 janvier 2019 à 16:48:27

    Bonjour,

    Je suis le cours Python "Apprenez à programmer en Python", et en théorie, tout semble aller.

    Mais, lors de la pratique, je bloque totalement sur le TP dictionnaire ordonné. Pourriez-vous m'expliquer les quelques premières lignes du code ? Je me sens totalement perdue.

    En effet, je comprends que l'on construise une class. Mais, je ne comprends pas :

    - la ligne :

    def__init__(self, base={}, **donnees):

    Oui, on utilise une méthode constructeur, __init__, pour contrôler les attributs. On créé un dictionnaire, "base". Puis, je ne suis pas sure de comprendre "**donnees". Est-ce un dictionnaire, passé en paramètre ? A ce moment là, si c'est ça, pourquoi ne pas faire un second dictionnaire, sur le même modèle que "base" ?

    - les lignes :

    if type(base) not in (dict, DictionnaireOrdonne):
    raise TypeError("Le type attendu est un dictionnaire")

    On vérifie que base est un dictionnaire exploitable. Mais dans quel cas pourrait-il ne pas être exploitable ?

    - Les lignes :

    #On récupère les données de base:
    for cle in base:
    	self[cle]=base[cle]
    		
    #On récupère les données de donnees:
    for cle in donnees:
    	self[cle]=donnees[cle]

    Ces lignes permettent-elles de faire coïncider les clés de "base" et de "donnees" ?

    -Les lignes :

    def __repr__(self):
                    
            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

    Qu'est-ce que "self.items()" ? 

    Puis, je ne comprends pas : si ce n'est pas "premier_passage", alors on ajoute une virgule comme séparateur.
    Sinon, si "premier_passage" est faux, on ajoute à la chaine "la clé : la valeur". Mais, "if not premier_passage" et "premier_passage=False" ne sont-ils pas la même chose ?

    Merci beaucoup pour votre aide et votre patience... !





    • Partager sur Facebook
    • Partager sur Twitter
      25 janvier 2019 à 5:43:15

      Bonjour,

      ça m'intéresse aussi d'apprendre, merci.

      -
      Edité par VincentNx 7 février 2019 à 2:53:54

      • Partager sur Facebook
      • Partager sur Twitter

      Questions/aide - TP : un dictionnaire ordonné

      × 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