Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème sur une méthode de classe

    5 octobre 2022 à 9:28:32

    Bonjour à tous, j'ai besoin d'aide concernant une méthode,

    Je voudrais ajouter les valeurs de mon gros paquet de carte à mes deux petit paquets créés dans la méthode remplir52,

    Pourtant la fonction append refuse de s'exécuter alors que je pense que se sont des listes

    Merci de votre aide
    import random 
    
    VALEURS = ['', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'Valet', 'Dame', 'Roi','As',]
    COULEURS = ['', 'pique', 'coeur', 'carreau', 'trefle']
    
    class Carte:
        """Initialise couleur (de 1 à 4), et valeur (de 1 à 13)"""
    
        def __init__(self, couleur, valeur):
            self.couleur = couleur
            self.valeur = valeur
    
        def get_nom(self):
            """Renvoie le nom de la Carte As, 2, ... 10, Valet, Dame, Roi"""
            return VALEURS[self.valeur]
    
        def get_couleur(self):
            """Renvoie la couleur de la Carte (parmi pique, coeur, carreau, trefle)"""
            return COULEURS[self.couleur]
    
        def __repr__(self):
            return f"{self.get_nom()} de {self.get_couleur()}"
    
    class PaquetDeCarte:
        """Initialise un paquet de cartes, avec un attribut contenu, de type list, vide"""
    
        def __init__(self):
            self.contenu = []
    
        def afficher(self):
            for i in range(len(self.contenu)):
                print(self.contenu[i])
            
    
        def remplir52(self):
            """Remplit le paquet de cartes : en parcourant les couleurs puis les valeurs"""
            self.contenu = [Carte(couleur, valeur) for couleur in range(1, 5) for valeur in range(1, 14)]
            random.shuffle(self.contenu)
            self.j1 = PaquetDeCarte()
            self.j2 = PaquetDeCarte()
            a = 0
            for i in range(26):
                self.j1.append(self.contenu[a])
                a += 1
                self.j2.append(self.contenu[a])
                a += 1
           
    • Partager sur Facebook
    • Partager sur Twitter
      5 octobre 2022 à 11:20:28

      j1 et j2 sont des instances de PaquetDeCarte pas des listes, au contraire de j1.contenu et j2.contenu
      • Partager sur Facebook
      • Partager sur Twitter
        5 octobre 2022 à 15:35:28

        umfred a écrit:

        j1 et j2 sont des instances de PaquetDeCarte pas des listes, au contraire de j1.contenu et j2.contenu

        merci pour ton aide

        -
        Edité par VictorThomas9 5 octobre 2022 à 15:39:26

        • Partager sur Facebook
        • Partager sur Twitter
          5 octobre 2022 à 15:41:44

          non, ce sont des instances de ta classe PaquetDeClasse, pour t'en convaincre

          class PaquetDeCarte:
              def __init__(s:lf)
                  self.contenu=[]
          
          j1=PaquetDeCarte()
          print(type(j1))
          #affiche <class '__main__.PaquetDeCarte'>
          print(type(j1.contenu))
          #affiche <class 'list'>
          



          • Partager sur Facebook
          • Partager sur Twitter

          Problème sur une méthode de classe

          × 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