Partage
  • Partager sur Facebook
  • Partager sur Twitter

Affectation de valeur dans une boucle

    25 septembre 2020 à 20:10:28

    Bonjour, j'essaie d'affecter la valeur True à une condition si le chiffre entré est 4 pour pouvoir sortir de la boucle. Tant que l'utilisateur n'entre pas le chiffre 4, on reste dans la boucle. Je vois dans le débuggeur que la variable en question ne prend pas la valeur True et reste à False même après avoir rencontré la condition qui devrait changer False pour True. Je laisse mon code:
    condition  = False
    while a == False:
        nombre = int(input("Entrez le nombre 4: "))
        if nombre == 4:
            condition == True
            print(bool(a))
    print(nombre)

    Le retour dans la console est: 4

    False

    Comment fais-je pour que la condition devienne vraie?

    Merci de m'éclairer,

    Ocuxz

    • Partager sur Facebook
    • Partager sur Twitter
      25 septembre 2020 à 20:30:33

      Bonjour,

      condition  = False
      while condition == False:
          nombre = int(input("Entrez le nombre 4: "))
          if nombre == 4:
              condition = True
      print(nombre)
      



      • Partager sur Facebook
      • Partager sur Twitter
      • J'aime les bananes, le python, le gnu, le pingouin.
        • Vive le libre !
        25 septembre 2020 à 20:46:30

        Super, merci, j'avais oublié de changer le nom de variable a pour condition en plus.

        Ocuxz

        • Partager sur Facebook
        • Partager sur Twitter
          25 septembre 2020 à 23:55:01

          Salut, tu devrais aussi écrire while not condition plutôt que while condition == False, c'est plus pythonique.

          De même pour if nombre == 4: condition = True qui pourrait au final être remplacé par condition = nombre == 4.

          Et là on remarque que la variable condition n'est plus vraiment utile, et que tu peux remplacer le tout par :

          nombre = 0
          while nombre != 4:
              nombre = int(input("Entrez le nombre 4: "))
          print(nombre)
          
          • Partager sur Facebook
          • Partager sur Twitter
            26 septembre 2020 à 8:37:45

            entwanne a écrit:

            Et là on remarque que la variable condition n'est plus vraiment utile, et que tu peux remplacer le tout par :

            nombre = 0
            while nombre != 4:
                nombre = int(input("Entrez le nombre 4: "))
            print(nombre)
            

            Qui à son tour deviendra :

            while (nombre := int(input("Entrez le nombre 4: "))) != 4: pass
            print(nombre)



            • Partager sur Facebook
            • Partager sur Twitter
              26 septembre 2020 à 9:01:32

              sedawk a écrit:

              entwanne a écrit:

              Et là on remarque que la variable condition n'est plus vraiment utile, et que tu peux remplacer le tout par :

              nombre = 0
              while nombre != 4:
                  nombre = int(input("Entrez le nombre 4: "))
              print(nombre)
              

              Qui à son tour deviendra :

              while (nombre := int(input("Entrez le nombre 4: "))) != 4: pass
              print(nombre)




              Bonjour,

              Oui effectivement depuis python 3.8... 

              • Partager sur Facebook
              • Partager sur Twitter
              • J'aime les bananes, le python, le gnu, le pingouin.
                • Vive le libre !
                26 septembre 2020 à 9:30:15

                Je ne vois pas le problème... C'est parfaitement lisible. :/

                Le pass aurait du être à la ligne effectivement.

                while (nombre := int(input())) != 4:
                    continue
                print(nombre)



                -
                Edité par __p_b2cs 26 septembre 2020 à 9:34:14

                • Partager sur Facebook
                • Partager sur Twitter
                  26 septembre 2020 à 9:44:03

                  5 opérations de 4 "types" différents (2 appels de fonction, une affectation, une comparaison et un début de boucle) sur une ligne je ne trouve pas que ça soit très lisible personnellement, et ça ne fait pas gagner grand chose.

                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 septembre 2020 à 19:20:31

                    Salut, merci pour les conseils d'optimisation!

                    Ocuxz

                    • Partager sur Facebook
                    • Partager sur Twitter

                    Affectation de valeur dans une 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