IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Bug d'une valeur manquante


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Par défaut Bug d'une valeur manquante
    Bonjour,
    je débute en poo en python (et en générale) et j'ai créer un jeu de carte sous python mais j'ai un bug que je ne comprend pas et que je n'arrive pas à résoudre. voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def __distribuer(self):
            for i in range (len(self.__jeu.cartes)):
                carte = self.__jeu.tirer()
                if i%2 ==0 :
                    self.__joueur.ajouterCarte(carte)
                else:
                    self.__ordinateur.ajouterCarte(carte)
    et il me sort l'erreur suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: ajouterCarte() missing 1 required positional argument: 'carte'
    et je ne comprend pas car "carte" est affecté en début de boucle for (mal construite ?)
    donc je vois pas mon erreur si vous avez besoin de plus de code dite moi

    kormedhar

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Quel est le traceback complet de l'erreur et comment est construite la fonction ajouterCarte ?

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Par défaut
    voici le traceback complet de l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Traceback (most recent call last):
      File "E:\progra\POO python\Jeu_Carte\start.py", line 6, in <module>
        jeu.demarrerPartie()
      File "E:\progra\POO python\Jeu_Carte\PartieBataille.py", line 12, in demarrerPartie
        self.__distribuer()
      File "E:\progra\POO python\Jeu_Carte\PartieBataille.py", line 26, in __distribuer
        self.__joueur.ajouterCarte(carte)
    TypeError: ajouterCarte() missing 1 required positional argument: 'carte'
    voici la fonction ajouterCarte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def ajouterCarte (self,carte):
            self.paquet.ajouter(carte)
    la fonction ajouter de paquet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     def ajouter(self,Carte):
            self.cartes.append(Carte)
     
        def __add__(self,Carte):
            self.ajouter(Carte)

    les lignes indiqué dans le traceback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    File "E:\progra\POO python\Jeu_Carte\start.py", line 6, in <module> : jeu.demarrerPartie()
    File "E:\progra\POO python\Jeu_Carte\PartieBataille.py", line 12, in demarrerPartie : self.__distribuer()
    File "E:\progra\POO python\Jeu_Carte\PartieBataille.py", line 26, in __distribuer : self.__joueur.ajouterCarte(carte)

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Salut,

    Citation Envoyé par kormedhar Voir le message
    voici la fonction ajouterCarte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    def ajouterCarte (self,carte):
            self.paquet.ajouter(carte)
    Si ajouterCarte est une fonction, elle a effectivement deux arguments: self et carte... Et il n'est pas très futé d'utiliser "self" comme premier argument dans ce cas. Et si c'était la méthode d'une classe, l'instruction "def" ne commencerait pas à la colonne 0.

    De plus, dans ce que vous montrez, impossible de comprendre ce que peut être "self.__joueur.ajouterCarte" i.e. comment on passe de l'attribut de l'objet self.__joueur (pourquoi utiliser '__') à la fonction ajouterCarte...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 36
    Par défaut
    c'est une méthode de classe elle commence a la colonne 5 (problème de copier/collé)

    De plus, dans ce que vous montrez, impossible de comprendre ce que peut être "self.__joueur.ajouterCarte" i.e. comment on passe de l'attribut de l'objet self.__joueur (pourquoi utiliser '__') à la fonction ajouterCarte...
    je vais analyser plus précisément cette partie mais je pense pas que ça vienne de là et le "__" sert a ce que la méthode soit privé en python

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 752
    Par défaut
    Citation Envoyé par kormedhar Voir le message
    c'est une méthode de classe elle commence a la colonne 5 (problème de copier/collé)
    Son comportement est cohérent avec celui d'une fonction.... et vous ne postez toujours pas assez de code pour qu'on puisse comprendre ce que vous avez fait (et vous aider).

    Citation Envoyé par kormedhar Voir le message
    je vais analyser plus précisément cette partie mais je pense pas que ça vienne de là et le "__" sert a ce que la méthode soit privé en python
    "__" n'a aucun rapport avec "privé". Il permet juste d'éviter à ce qu'un attribut soit redéfini dans une s/classe ou accédé par erreur. En tout cas, si vous débutez en POO, vous n'avez pas besoin d'utiliser ce type de fonctionnalités.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/03/2015, 08h53
  2. Ajouter une valeur manquante dans une liste déroulante
    Par fremarnat dans le forum VBA Access
    Réponses: 0
    Dernier message: 05/11/2013, 15h24
  3. Réponses: 5
    Dernier message: 27/10/2008, 14h53
  4. Réponses: 1
    Dernier message: 03/01/2008, 14h44
  5. Comment trouver les valeurs manquante d'une série ?
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 17/10/2006, 09h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo