Partage
  • Partager sur Facebook
  • Partager sur Twitter

IDDLE et PyCharm une vraie histoire d'amour !

Debutant qui ne comprends pas pourquoi ????

Sujet résolu
    3 février 2014 à 19:51:35

    Bonsoir, amis zéros

    Je me retrouve avec une erreur plutôt embarrassante.

    Je suis entrain de coder mon pendu et je ai pondu ce code (je l'ai déjà fait en c, donc je connais à peu près les fonctions à faire) qui déduit le nombre de mot dans la liste.

    Le code : 
    def nombreListe(liste): #Renvoie le nombre d'objet que contient la liste
        listeNombre = 0
    
        for i, elt in enumerate(liste):
            listeNombre =+1
            print("IL ya {} mot".format(i))
    
        listeNombre = (i+1)
        return listeNombre

    Mais je l'ai testé sur PyCharm en mode console et il m'affiche ça :

    File "<console>", line 1

        for i, elt in enumerate(liste):

       ^

    IndentationError: unexpected indent

      File "<console>", line 1

        listeNombre = (i+1)

       ^

    IndentationError: unexpected indent

      File "<console>", line 1

        return listeNombre

       ^

    IndentationError: unexpected indent

    Alors que sur IDDLE de python, il marche a merveille et m'affiche tout bonnement le résultat souhaité.
    J'espère que j'ai bien configurée PyCharm ???? 
    Bonsoirs ! 
    Ps : Dites ce que vous penser de cette fonctions ???? (si je l'ai bien faites)
    • Partager sur Facebook
    • Partager sur Twitter
      3 février 2014 à 20:15:11

      Enlève l’espace entre

      listeNombre = 0

      et

      for i, elt in enumerate(liste):

      En console, la fin d'une fonction se marque par un retour à la ligne.

      PyCharm n'affiche probablement pas de prompt secondaire, qui te permet de voir si tu es dans un bloc où non.

      Ex de prompt secondaire avec le shell python sous linux:

      >>> def abc():
      ...    commande
      ...    encore une autre
      ...    etc
      ...    #fin de fonction
      >>>abc()
      >>>
      

       et avec PyCharm:

      >>> def abc():
      >>>    commande
      >>>    encore une autre
      >>>    etc
      >>>    #fin de fonction
      >>>abc()
      >>>

      Tu vois: impossible de faire la différence avec le prompt principal et le prompt secondaire.

      avec un script, la fin d'un bloc se marque avec la fin d'une indentation; c'est pourquoi ton script marche sinon.



      -
      Edité par pythan 3 février 2014 à 20:20:43

      • Partager sur Facebook
      • Partager sur Twitter
      Bevet Breizh! Breizh dizalc'h! Betek an trec'h! Ha mallozh ruz d'ar c'hallaoued! Trouvez votre voie
      Anonyme
        3 février 2014 à 21:25:33

        Bonsoir,

        quelque chose me gêne dans ton bout de code. Niveau convention. 

        Si tu comptes te mettre à Python, jette un oeil au cours du site notamment à la fin le sujet y est abordé.

        Heu sinon, pourquoi pas

        len(ma_liste)

        ??

        -
        Edité par Anonyme 3 février 2014 à 21:37:36

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 février 2014 à 21:42:46

          n =+ 1 signifie n = 1 (le + ne sert à rien ici). C'est effectivement n += 1 qui incrémente le n.

          Sinon pour ce qui est de l'espace à la ligne 3, si c'est ça qui pose problème alors PyCharm n'est pas réellement charmant... Les lignes ne contenant que des caractères blancs sont, normalement, ignorées par Python.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            3 février 2014 à 21:47:59

            J'utilise PyCharm pour un projet, j'ai tout un tas de fonctions avec des sauts de ligne pour aérer le code et aucun problème que ça soit en Debug et en Run. Je ne pense pas que le problème vienne de là.

            • Partager sur Facebook
            • Partager sur Twitter
              4 février 2014 à 16:09:03

              sylvain87 a écrit:

              Je ne pense pas que le problème vienne de là.

              En tout cas, l' erreur indique clairement que le bloc est identé alors qu'il ne faut pas.

              Moi je suis quasiment certain que le problème vient de la.

              Edit:

              Et en effet, ton code ne sert à rien; len(liste) est tout à fait approprié pour ça.

              -
              Edité par pythan 4 février 2014 à 16:11:23

              • Partager sur Facebook
              • Partager sur Twitter
              Bevet Breizh! Breizh dizalc'h! Betek an trec'h! Ha mallozh ruz d'ar c'hallaoued! Trouvez votre voie
                5 février 2014 à 13:58:41

                Bon pour l'instant rien, logiciel fais une mise a jour et plante. 

                • Partager sur Facebook
                • Partager sur Twitter
                  5 février 2014 à 20:16:11

                  Merci à tout le monde, j'ai réussie avec la fonction 

                  len(mot)

                  Passez une bonne soirée :)

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    8 février 2014 à 21:02:30

                    pythan a écrit:

                    sylvain87 a écrit:

                    Je ne pense pas que le problème vienne de là.

                    En tout cas, l' erreur indique clairement que le bloc est identé alors qu'il ne faut pas.

                    Moi je suis quasiment certain que le problème vient de la.

                    Edit:

                    Et en effet, ton code ne sert à rien; len(liste) est tout à fait approprié pour ça.

                    -
                    Edité par pythan le 4 février 2014 à 16:11:23

                    Mais lol!

                    Epinglé sur ce forum, il y a un topic Erreurs courantes en Python. En voici un extrait (à propos de IndentationError):

                    Vérifiez que votre longueur d'indentation est identique dans tout votre code et que vous n'avez pas mélangé les tabulations et les espaces.

                    Peut-être que dans ce cas précis, en supprimant le saut de ligne à cet endroit-là enlève l'exception. Mais quand on voit le manque de rigueur du code ( d'ailleurs PyCharm fait monter un "warning" quand on ne respecte pas PEP8, bizarre de se plaindre de cet IDE qui corrige même les fautes d'orthographe dans les docstrings !), je me dis que le problème vient très probablement d'une erreur bête (mélange tab/espaces, quelque chose en amont du code que Cirdo a posté, etc.) et sûrement pas d'un saut de ligne au sein d'une fonction !

                    -
                    Edité par Anonyme 8 février 2014 à 21:10:38

                    • Partager sur Facebook
                    • Partager sur Twitter
                      8 février 2014 à 21:27:50

                      Mais lololololololololololololololololololololol!!!

                      Si on mélange les espaces et les tabulations, python renvoie:

                      >>> if 0:
                      ...     print()
                      ...     pass
                        File "<stdin>", line 3
                          pass
                             ^
                      IndentationError: unindent does not match any outer indentation level
                      
                      De plus les indentations sont identiques, d'après ce que nous à donné cirdo.

                      -
                      Edité par pythan 8 février 2014 à 21:28:51

                      • Partager sur Facebook
                      • Partager sur Twitter
                      Bevet Breizh! Breizh dizalc'h! Betek an trec'h! Ha mallozh ruz d'ar c'hallaoued! Trouvez votre voie
                      Anonyme
                        8 février 2014 à 22:34:58

                        pythan a écrit:

                        d'après ce que nous à donné cirdo.


                        On se prend la tête pour rien, le problème vient de là. J'ai écrit exactement la même fonction que cirdo dans PyCharm. Au caractère près. Hors-mis les warnings de convention, ça fonctionne. Le pire c'est que j'ai "tout" essayé pour avoir la même erreur et à chaque fois PyCharm comprend et gère parfaitement le truc (tabs ou espaces en trop sur lignes vides ignorés, erreur signalée par un gros carton rouge en cas d'indentation error grossière...).

                        -
                        Edité par Anonyme 8 février 2014 à 22:35:48

                        • Partager sur Facebook
                        • Partager sur Twitter
                          9 février 2014 à 14:40:55

                          Ne vous inquiétez vous pas, j'ai trouver une solution. 

                          J'ai oublier de mettre en résolue. 

                          Désoler :honte:

                          • Partager sur Facebook
                          • Partager sur Twitter

                          IDDLE et PyCharm une vraie histoire d'amour !

                          × 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