Partage
  • Partager sur Facebook
  • Partager sur Twitter

None?

Sujet résolu
    20 novembre 2010 à 4:35:26

    BOnjours.
    J'apprend la Poo depuis peux, et j'ai fréquement le mot "None" qui se fout après l'affichage d'un print...C'est chiant...
    Pourquoi?

    Voici par exemple une ébauche d'un "jeu" de carte:
    class JeuDeCarte():
        x, y = 2, 0
        DICO = {11:'Valet', 12:'Dame', 13:'Roi', 14:'As'}
        DICO2 = {3:'Coeur', 2:'Carreau', 1:'Trèfle', 0:'Pique'}
        
        def __init__(Auto, Liste=[], Tuple=()):
            Auto.Liste = []
    
            while(Auto.y < 4):                     #Géneration de la liste des valeur
                while(Auto.x < 15):
                    Auto.Tuple = (Auto.x, Auto.y)
                    Auto.Liste.append(Auto.Tuple)                
    
                    Auto.x+=1
                Auto.y+=1
                Auto.x = 2
                
        def nom_carte(Auto, Index):
             print(Auto.Liste[Index]) #Extraction des tuples de la liste...
                                              
    
        
    
    
    test = JeuDeCarte()
    print(test.nom_carte(4))
    


    (6, 0)
    None


    Image utilisateur
    • Partager sur Facebook
    • Partager sur Twitter
      20 novembre 2010 à 4:57:47

      tu fais un double print. le premier (celui qui affiche la liste) c'est la ligne 19, et le "None" c'est celui de la ligne 26 (vu que test.nom_carte ne renvoie rien)
      • Partager sur Facebook
      • Partager sur Twitter
        20 novembre 2010 à 6:19:27

        En général on utilise le mot clé self en premier argument des methodes, pas "Auto" ou autres appellations fantaisistes.

        EDIT : Ce code est vraiment étrange, la ligne 11 me laisse perplexe par exemple.
        • Partager sur Facebook
        • Partager sur Twitter

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

          20 novembre 2010 à 6:48:24

          En quoi elle te rend perplexe...?

          Le mieux c'est de faire ça?
          def nom_carte(Auto, Index):
                   return(Auto.Liste[Index])
                   
          test = JeuDeCarte()
          print(test.nom_carte(4))
          


          Ou ça?
          def nom_carte(Auto, Index):
                   print(Auto.Liste[Index])
                   
                                                    
          test = JeuDeCarte()
          test.nom_carte(4)
          


          • Partager sur Facebook
          • Partager sur Twitter
            20 novembre 2010 à 7:07:18

            Plutôt le premier, mais sans les parenthèses inutiles, avec self à la place de Auto et des minuscules au début des variables.
            Sinon, cette fonction ne sert pas à grand chose... Pourquoi ne pas y accéder directement avec mon_jeu_de_cartes.liste_cartes[index] ? Rajouter une méthode qui implémente simplement la lecture de l'élément d'une liste attribut n'a pas un grand intérêt.
            La ligne 11 laisse LoupSolitaire perplexe parce qu'elle ne sert à rien : tu définis une variable pour l'utiliser seulement une fois, à la ligne qui suit. Tu aurais aussi bien pu^W^W^Wdu écrire self.liste_cartes.append((self.x, self.y)) (note les doubles-parenthèses pour reconnaître le tuple, ce qui est probablement le problème que tu as rencontré).

            Sinon, tes noms de variables ne sont pas très explicites : que sont x et y ? Idem pour DICO1 et DICO2, on comprend en lisant les déclarations, mais dans un code un peu plus conséquent, ce sera incompréhensible dans les lignes où on les utilisera.
            • Partager sur Facebook
            • Partager sur Twitter
              20 novembre 2010 à 7:41:03

              Il y a aussi le fait d'utiliser des variables d'instance pour x et y, alors qu'à priori ces variables ne seront utilisées que dans le constructeur.
              • Partager sur Facebook
              • Partager sur Twitter

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

              None?

              × 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