Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme execution d'une fonction

Sujet résolu
    19 août 2014 à 12:52:11

    Bonjour,

    je suis nouveau dans la programmation en python et je suis un cours qui a été poste sur le Site du Zero auparavant.

    Dans ce cours nous avons une fonction qui pour celui qui a ecrit le livre s’exécute normalement mais pour moi j'ai tjrs la même erreur d'execution.

    Je vous passe ce petit bout de code pour que vous puissiez m'aidez a le faire marcher.

    Ce petit programme vérifie si vous avez saisi un nombre flottant et remplace le . séparant les 2 partie par une virgule.

    #!/usr/bin/python3.4
    
    # -*-coding:Utf8 -*
    
    def afficher_flottant(flottant):
    
        flottant=float(flottant)
    
        print(type(flottant))
    
        if flottant is not float:
    
            raise TypeError("Le parametre attendu doit etre un flottant. ")
    
        else:
    
            flottant = str(flottant)
    
            partie_entiere,partie_flottante = flottant.split(".")
    
            return ",".join([partie_entiere, partie_flottante[:3]])
    
    if __name__ == "__main__":
    
        flottant = input("Saisissez un flottant: ")
    
        afficher_flottant(flottant)

    -
    Edité par another_else 19 août 2014 à 14:41:32

    • Partager sur Facebook
    • Partager sur Twitter
      19 août 2014 à 14:29:20

      tupac_kane a écrit:

      mais pour moi j'ai tjrs la même erreur d'execution.

      Quelle est cette erreur ?

      • Partager sur Facebook
      • Partager sur Twitter
      yjltg.
        19 août 2014 à 14:38:29

        Utilise les balises de codes pour poster un code sur le forum (le bouton </>). Il aurait été utile que tu postes l’erreur, on ne peut pas la deviner.

        Tu lis quel tuto ? Cette fonction me parait foireuse. Voici un code déjà moins foireux :

        def float_to_string(flottant):
        
        if type(flottant) is not float:
            raise TypeError("Le parametre attendu doit etre un flottant. ")
        else:
            s = str(flottant)
            return s.replace('.', ',')
        

        if name == "main":

        s = input("Saisissez un flottant : ")
        flottant = float(s)
        print(float_to_string(flottant))</pre>
        
        </pre>
        • Partager sur Facebook
        • Partager sur Twitter
          19 août 2014 à 14:38:45

          Quel que soit le parametre saisi je reste dans la boucle ;

          raise TypeError("Le parametre attendu doit etre un flottant. ").

          Je me suis bien assure d'avoir saisi un float.

          -
          Edité par another_else 19 août 2014 à 14:49:37

          • Partager sur Facebook
          • Partager sur Twitter
            19 août 2014 à 14:45:35

            fscorpio a écrit:

            Utilise les balises de codes pour poster un code sur le forum (le bouton </>).
            Il aurait été utile que tu postes l’erreur, on ne peut pas la deviner.

            Tu lis quel tuto ? Cette fonction me parait foireuse. Voici un code déjà moins foireux :

            def float_to_string(flottant):
                if type(flottant) is not float:
                    raise TypeError("Le parametre attendu doit etre un flottant. ")
                else:
                    s = str(flottant)
                    return s.replace('.', ',')
            
            if __name__ == "__main__":
                s = input("Saisissez un flottant : ")
                flottant = float(s)
                print(float_to_string(flottant))

            Dans mon code ce doit etre 

            if type(flottant) is not float:
            
            au lieu de 
            
            if flottant is not float:



            Merci pour votre aide et excuse mes erreur de debutant.

            -
            Edité par another_else 19 août 2014 à 14:57:09

            • Partager sur Facebook
            • Partager sur Twitter
              19 août 2014 à 14:47:45

              quelqun_dautre a écrit:

              tupac_kane a écrit:

              mais pour moi j'ai tjrs la même erreur d'execution.

              Quelle est cette erreur ?


              Quel que soit le parametre saisi je reste dans la boucle ;

              raise TypeError("Le parametre attendu doit etre un flottant. ").

              Je me suis bien assure d'avoir saisi un float.

              • Partager sur Facebook
              • Partager sur Twitter
                19 août 2014 à 14:55:39

                tupac_kane a écrit:

                Etant debutant ce serait bien que vous me dites ce qui peut bien être foireux dans ce code.

                if flottant is not float:

                Au lieu de

                if type(flottant) is not float:
                Qui ne sert de toute façon à rien vu que juste avant le type est forcé en float :
                flottant=float(flottant)

                Ensuite,

                return ",".join([partie_entiere, partie_flottante[:3]])
                Pourquoi [:3] ? Et de toute façon si tu souhaites remplacer un . par une ,, tu utilises replace et le tour est joué.

                Il y avait aussi à dire vers la fin du code mais tu l’as édité entre temps.

                -
                Edité par fscorpio 19 août 2014 à 14:56:21

                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  19 août 2014 à 15:05:32

                  Plus simple

                  >>> import locale
                  >>> locale.setlocale(locale.LC_ALL, '')
                  'fr_FR.UTF-8'
                  >>> locale.format('%.2f', 1.23)
                  '1,23'
                  



                  • Partager sur Facebook
                  • Partager sur Twitter
                    19 août 2014 à 15:09:55

                    Cfscorpio a écrit:

                    tupac_kane a écrit:

                    Etant debutant ce serait bien que vous me dites ce qui peut bien être foireux dans ce code.

                    if flottant is not float:

                    Au lieu de

                    if type(flottant) is not float:

                    Qui ne sert de toute façon à rien vu que juste avant le type est forcé en float :

                    flottant=float(flottant)

                    Ensuite,

                    return ",".join([partie_entiere, partie_flottante[:3]])

                    Pourquoi [:3] ?
                    Et de toute façon si tu souhaites remplacer un . par une ,, tu utilises replace et le tour est joué.

                    Il y avait aussi à dire vers la fin du code mais tu l’as édité entre temps.

                    -
                    Edité par fscorpio il y a 7 minutes

                    C'est en lisant le bout de code que vous m'aviez envoye que j'ai put voir les erreurs que j'ai pu faire.

                    Pour le 

                    return ",".join([partie_entiere, partie_flottante[:3]])

                    je voulais juste que la fonction me retour les 3 premiers chiffres apres la virgule quelle que soit lq longueur du flottant,

                    Et la methode replace que vous m'avier envoyer peut faire les choses en plus simple.

                    Encore 1000 Merci pour votre aide.


                    • Partager sur Facebook
                    • Partager sur Twitter
                      19 août 2014 à 15:28:56

                      oldProgrammer a écrit:

                      Plus simple

                      >>> import locale
                      >>> locale.setlocale(locale.LC_ALL, '')
                      'fr_FR.UTF-8'
                      >>> locale.format('%.2f', 1.23)
                      '1,23'
                      



                      Le nom en dit long. Ca c'est la simplicite. Reste plus que je l'adapte a mon programme.

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Probleme execution d'une fonction

                      × 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