Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème avec une exception

Sujet résolu
Anonyme
    6 juillet 2010 à 17:29:26

    Bonjour ! Voilà je fais une fonction qui vérifiera si la valeur donner respecte bien certaine condition ( ne dépasse pas un certain nombre, et n'est pas une lettre. )
    Seulement pour vérifier si le nombre en question n'est pas une lettre, je dois utiliser les exceptions, ca avait bien marcher pour mon ZCasino, mais là, o_O , ca me fait la tronche !
    Enfaite, dans le ZCasino c'était super, sa retournait à la boucle, mais là, ca ne le fait pas, et j'aimerai que ca le fasse.

    Je vous envoi le code de la fonction :

    def ask(randrangeValue):
        a = -1
        while a < 0 or a > randrangeValue:
            print("Entrez une nombre entre 0 et", randrangeValue - 1, ", inclus, s'il vous plaît : ")
            a = input()
            try :
                a = int(a)
            except ValueError:
                print("Entrez un nombre s'il vous plaît")
                continue
        print("Vous avez donc entrez : ", a)
        return a
    


    Et au cas où, la boucle en question du ZCasino, pour comparer et peut être, me dire la différence qui fait que ca ne marche pas :

    mise_bool = False
            while mise_bool == False:
                print("Quel est la somme de votre mise : ")
                mise = input()
                try:
                    mise = int(mise)
                except ValueError:
                    print("Ne pariez que des nombres !")
                    continue
                if mise <= 0 :
                    print("Pariez au moins 1 euro...")
                elif mise > argent:
                    print("Vous n'avez pas assez d'argent")
                else:
                    mise_bool = True
    
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      6 juillet 2010 à 17:33:42

      Citation

      Seulement pour vérifier si le nombre en question n'est pas une lettre, je dois utiliser les exceptions



      Moi j'aurais utilisé isinstance

      nb=input()
      if isinstance(nb, int): # si nb est un nombre, on traite
          # traitement
      
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 juillet 2010 à 17:36:28

        Je veux que se sois forcément un nombre, dans ce cas, si c'est une lettre il se passera rien et ca retournera une lettre ? :/

        ( Au passage, je me demandais comment on fait pour importer cette fonction dans un autre projet ? Sans la recopier, un peu comme un "import math" )

        Je ne connais pas comment marche la fonction "isinstance", mais, si j'ai bien compris, ca a besoin de recevoir deux paramètres, une variable, et sa classe ? Et en fonction de si s'en est une ou pas on traite quelque chose de précis.
        Dans ce cas, je pourrais mettre :
        if isinstance(a, char):
            print("N'entrez que des nombres s'il vous plaît")
            continue
        


        Si j'ai raison, j'aimerai tout de même savoir pourquoi, la façon dont j'ai voulu régler le problème ( c'est à dire avec try/except) n'a pas marché ? Et pourquoi elle a marché dans mon ZCasino ?
        • Partager sur Facebook
        • Partager sur Twitter
          6 juillet 2010 à 17:43:57

          Je crois que Python 3 refuse les comparaisons de type > avec des valeurs de types différentes.
          Rajouter a = -1 dans le except devrait régler le problème.
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 juillet 2010 à 17:46:37

            En effet j'utilise Python 3, j'ai oublié de le préciser :lol:
            Et, en effet EMC1, ça marche... Mais alors là Oo
            Pour ça a marché ? Pour ça a marché sans pour le ZCasino ?
            Je ne comprends pas vraiment là

            EDIT :
            Après reflexion, j'ai compris pour EMC1 :)
            On mets a = -1 pour la comparaison dans la boucle !
            Ok !
            • Partager sur Facebook
            • Partager sur Twitter
              6 juillet 2010 à 17:51:29

              Dans ton autre code la condition du while est la suivante :
              while mise_bool == False:
              et le continue dans le except garantit que ce code ne sera exécuté que si mise est un int.
              if mise <= 0 :
                              print("Pariez au moins 1 euro...")
                          elif mise > argent:
              


              Edit : effectivement, remettre a à -1 permet de reboucler.
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                6 juillet 2010 à 17:52:57

                Ok ! Merci alors ^^
                Mon problème est résolu !

                Juste comme ca alors, question optionnel ( si on me répond pas je chercherai tout seul :lol: )

                Comment je fais pour importer ma fonction dans un autre projet python, de la même manière qu'un "import math" ?

                EDIT :
                Ben j'ai trouvé :)
                suffit de faire import + le nom du dossier, exactement pour les math, je me demande juste comment fait python pour retrouver le truc, quand c'est dans le même dossier, ca marche, mais sinon... J'ai eu beau essayer de lui remettre le chemin du truc, que dalle :p
                • Partager sur Facebook
                • Partager sur Twitter

                Problème avec une exception

                × 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