Partage
  • Partager sur Facebook
  • Partager sur Twitter

Erreur d'indentation

Sujet résolu
    20 mars 2019 à 14:52:48

    Bonjour,

    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.

    -
    Edité par Tillbo 20 mars 2019 à 14:55:14

    • Partager sur Facebook
    • Partager sur Twitter
      20 mars 2019 à 15:03:55

      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

      • Partager sur Facebook
      • Partager sur Twitter

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

        20 mars 2019 à 15:29:32

        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 ?

        • Partager sur Facebook
        • Partager sur Twitter
          20 mars 2019 à 16:42:35

          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

          • Partager sur Facebook
          • Partager sur Twitter
            20 mars 2019 à 19:00:31

            ThibaultObit a écrit:

            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.
            • Partager sur Facebook
            • Partager sur Twitter

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

              20 mars 2019 à 19:05:58

              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

              • Partager sur Facebook
              • Partager sur Twitter

              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)

                20 mars 2019 à 19:21:17

                Division par zéro je suppose.
                • Partager sur Facebook
                • Partager sur Twitter
                  20 mars 2019 à 19:39:14

                  Mouais, mais cette variable est pas censé être modifié préalablement ? :-°
                  • Partager sur Facebook
                  • Partager sur Twitter

                  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)

                    25 mars 2019 à 17:59:16

                    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

                    • Partager sur Facebook
                    • Partager sur Twitter

                    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.
                    • Editeur
                    • Markdown