Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Pourquoi mon code ne fonctionne pas ?

+4 votes

Il y a peu j'ai commencé à apprendre le langage python et je viens d'essayer d'écrire un jeu en python 3.4. Malheureusement, mon code ne fonctionne pas et je ne sais pas pourquoi.
Le message d’erreur est le suivant:

Traceback (most recent call last):
 File "/home/user/Escape/jeufiliforme.py", line 268, in <module>
    jeu.boucle_principale()
  File "/home/user/Escape/jeufiliforme.py", line 28, in boucle_principale
    lutin.deplacer()
  File "/home/user/Escape/jeufiliforme.py", line 211, in deplacer
    if gauche and self.x < 0 and collision_gauche(co, co_lutin):
  File "/home/user/Escape/jeufiliforme.py", line 58, in collision_gauche
    if dans_y(co1, co2):
  File "/home/user/Escape/jeufiliforme.py", line 49, in dans_y
    if (co1.y1 > co2.y1 and co1.y1 < co2.y2) \
AttributeError: 'NoneType' object has no attribute 'y1'

Mon code peut être téléchargé ici.

Edit @boblinux : le site donné est un peu trop douteux, risqué de télécharger quelque chose là bas, je vous redirige vers un pastebin contenant le code en question (osef des images, l'erreur n'est pas en rapport)

demandé 28-Fev-2016 par Toude
edité 29-Fev-2016 par foxmask

1 Réponse

+2 votes

Le message d'erreur est très excite: 'NoneType' object has no attribute 'y1' on line 49 veut dire "Le type None" n'a pas d'attribut "y1" à la ligne 49.

Ce qui signifique que ligne 49, une des variables sur lesquelles tu essayes de faire ".y1" contient None.

Vérifie le contenu des variables (co1, co2, etc). Cherche laquelle contient None, et remonte le long de la logique de ton programme pour savoir comment c'est arrivé là.

répondu 29-Fev-2016 par Sam (4,980 points)

Merci beaucoup, je vais essayer de résoudre ça dès que possible et je vous ramène mon résultat.

Après avoir observé mon code, je ne discerne réellement pas ce qui cloche. Je m'excuse de vous demander cela mais je suis un débutant (cela fait seulement 3 semaines que j'ai commencé la programmation).

C'est le but de ce site, tu n'embêtes personne. En l'occurence, pour résoudre ton problème, il ne s'agit pas de regarder, il s'agit de debugger. Fait un tour sur http://sametmax.com/debugger-en-python-les-bases-de-pdb/. Quand tu seras à l'aise avec, lance PDB juste avant ton erreur, et regarde le contenu des variables. Quand tu as identifié quelle variable contient None, lance pdb au niveau de sa déclaration et suit son évolution au fur et à mesure que le programme avance afin de trouver où elle devient None.

Merci à tous, je vais essayer ça dès que je peux.

pas besoin de remercier et de t'excuser à chaque phrase, t'es le bienvenu sur IE, au final on est tous des débutants ;)

...