Je suis en train de développer une mini application sur python, et tout me semble en ordre (au moins au niveau de l'indentation).
Voici mon code (les parties inintéressantes, je l'ai légèrement coupé)
def valider_game(nb_joueurs_max, joueurs):
joueurs_game = {}
nb_kills_totaux = 0
while True:
classement = input("Quel à été le classement ?\n") #A modifier avec un choix de nombres
try:
classement = int(classement)
except:
continue
if classement <= 100/nb_joueurs_max:
break
#On gère les points de kills d'équipe
for joueur in joueurs_game.keys():
try:
pts_kills = round(joueurs_game[joueur] + joueurs_game[joueur] / (nb_kills_totaux / len(joueurs)))
except:
pts_kills = 0
joueur.addPts((101 - classement) + pts_kills + nb_joueurs_max _ len(joueurs))
return joueurs_game.keys()
Mais, lors de l’exécution, voilà l'erreur que j'ai :
File "C:\Users\thiba\Desktop\Funite\mm\valider_game.py", line 37 for joueur in joueurs_game.keys(): ^ TabError: inconsistent use of tabs and spaces in indentation
Or, je ne vois pas l'erreur d'indentation qu'il peut y avoir...
Merci de votre aide,
Tillbo.
P.S. : la ligne qui est notée sur la capture d'écran est en réalité la 15 sur le code que j'ai mis plus haut. J'ai coupé une partie.
L'indentation doit être faite avec des espaces ou des tabulations, pas un mélange des deux.
C'est normal de pas le voir, le plus simple c'est de virer l'indentation de la ligne concernée et la recréer, si l'erreur persiste c'est que ton éditeur de texte est mal paramétré (dans le cas ou tu utilise l'indentation automatique
Pourtant, je n'utilise pas d'espaces : que des tabs. Et, même en ayant rechangé l'indentation, ça continue à me mettre la même erreur.
Sinon, j'utilise Notepad ++, y a-t-il un lien avec ce problème ?
C'est pas parce que tu appuie sur tab que ça insère des tabulations, selon la configuration de l'éditeur de texte, ça peut très bien être des espaces, et si tu as ouvert le fichier avec un autre éditeur à un moment, ça peut avoir provoqué ça.
J'ai échangé les tabulations par des espaces dans ton code, testes voir à nouveau, afin qu'on voit si tu as toujours la même erreur
def valider_game(nb_joueurs_max, joueurs):
joueurs_game = {}
nb_kills_totaux = 0
while True:
classement = input("Quel à été le classement ?\n") #A modifier avec un choix de nombres
try:
classement = int(classement)
except:
continue
if classement <= 100/nb_joueurs_max:
break
#On gère les points de kills d'équipe
for joueur in joueurs_game.keys():
try:
pts_kills = round(joueurs_game[joueur] + joueurs_game[joueur] / (nb_kills_totaux / len(joueurs)))
except:
pts_kills = 0
joueur.addPts((101 - classement) + pts_kills + nb_joueurs_max _ len(joueurs))
return joueurs_game.keys()
Après éviter les except seuls, spécifier quel type d'erreur attraper... ligne 9, c'est ValueError, par contre ligne 18, pourquoi ça peut merder ?
- Edité par fred1599 20 mars 2019 à 19:14:19
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Mouais, mais cette variable est pas censé être modifié préalablement ?
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Ok, je vais essayer avec les espaces. Sinon, la ligne 18, c'est bien une division par 0, car les variables peuvent en effet être égales à 0 dans mon code (c'est voulu). Sinon, mon problème viendrais (d'après moi) de Notepad++. J'ai essayé de modifier mon code avec un autre éditeur (sur un autre ordinateur), et j'ai au moins 2 tabs à chaque indentation de mon code...
Notepad++ aurait-il une gestion des tabulations mauvaise pour Python ? Si oui, y a-t-il moyen de la changer ?
thelinekioubeur a écrit:
Je ne vois pas d'erreur d'indentation mais une erreur de syntaxe ligne 20 avec le _ qui traîne.
À part ça, for joueur in joueurs_game fait la même chose que for joueur in joueurs_game.keys()
- Edité par thelinekioubeur 20 mars 2019 à 16:43:43
Ok, je n'avais pas vu cette erreur. Merci !
J'ai trouvé mon erreur : il y avait bien un mélange de tabs et d'espaces (je ne sais pas comment, ni pourquoi, peut-être (probablement) une fausse manip de ma part). Merci à tous !
- Edité par Tillbo 25 mars 2019 à 18:09:51
Erreur d'indentation
× 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.
Blond, bouclé, toujours le sourire aux lèvres...
Blond, bouclé, toujours le sourire aux lèvres...
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)