Partage
  • Partager sur Facebook
  • Partager sur Twitter

break n'arrête pas ma boucle

Sujet résolu
    19 janvier 2020 à 16:50:43

    Bonjour, je suis en train de faire le TP zCasino du cours et j'ai écrit un code qui marche tant que l'utilisateur n'entre pas autre chose que des integer.

    Du coup j'essaye de faire des boucles qui ne s'arrêtent pas tant que l'utilisateur n'entre pas un int(lorsque c'est un int qui est entré, la boucle est sensée s'arrêter)

    Voici ma fonction qui teste si le mot entré peut être transformé en int:

    def tryInteger(nb,integer):
        try:
            nb = int(nb)
            if type(nb) == int:
               integer = True
    
        except:
            print("Vous n'avez pas entre un nombre entier")
            integer = False



    et voici un endroit de mon programme ou j'essaye de faire une boucle:

             
             integer = False
             while integer == False :
                sommeMise = input("Mettez la somme que vous voulez miser: ")
                tryInteger(sommeMise,integer)
                if integer == True:
                   break

    Quand je compiles, que je rentres un int ou autre chose, le programme me demande: "Mettez la somme que vous voulez miser: "

    ça fait maintenant plusieurs heures que j'essaye donc si quelqu'un peut aider, ce sera avec plaisir.
    Merci d'avance.

    • Partager sur Facebook
    • Partager sur Twitter
      19 janvier 2020 à 19:00:40

      La variable integer qui est dans la fonction n'est pas la même que celle qui est en dehors.

      C'est le principe des variables locales.

      Pour récupérer la valeur qui t'intéresse tu peux utiliser return dans ta fonction.

      • Partager sur Facebook
      • Partager sur Twitter

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

        22 janvier 2020 à 18:34:17

        Bonjour, je viens d'essayer avec le return mais rien ne change:

        Voici les modifications que j'ai effectué à la fonction:

        def tryInteger(nb,integer):
            try:
                nb = int(nb)
                if int(nb) == True:
                   integer = True
                   return integer
        
            except:
                print("Vous n'avez pas entre un nombre entier")
                integer = False
                return integer



        • Partager sur Facebook
        • Partager sur Twitter
          22 janvier 2020 à 19:00:36

          Ta fonction tryInteger a un problème de conception : elle admet deux paramètres et un des deux ne sert pas (integer, qui d'ailleurs est un mauvais nom de variable). Et ça peu de sens de renvoyer integer.

          Et il y a de nombreuses anomalies. Par exemple nb ligne 3 est censé être un int mais derrière tu fais int(nb) ce qui n'a aucun intérêt et tu vas le comparer à un booléen ce qui n'a pas grand sens surtout qu'en fait tu vas juste comparer nb à la valeur 1 car True est en fait un int qui vaut 1.

          Tu devrais commencer par clarifier le rôle de ta fonction :

          • que doit-elle faire ?
          • de quoi a-t-elle besoin pour faire ce qu'elle a à faire ?
          • admet-elle un return ? 
          • peut-elle quitter en déclenchant une exception ? et si oui de type (tu as écrit un try sec ce qui est rarement pertinent) ?

          Peut-être regarder un cours avec un peu plus de détail (sur les exceptions en particulier).

          • Partager sur Facebook
          • Partager sur Twitter

          break n'arrête pas ma boucle

          × 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