Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème sur les boucles while.

Problème avec plusieurs conditions de sortie.

Sujet résolu
    21 mai 2015 à 22:03:46

    Bon voilà j'essaye de m'entraîner à programmer sur python depuis peu néanmoins je rencontre un petit problème sur les boucles while :

    import random
    r = random.randint(0, 101)
    
    entree = 101
    i = 0
    
    while (entree != r) or (i < 5):
    	entree = input("Choisissez un nombre : ")
    	if entree.isdigit() == True:
    		i += 1
    		if int(entree) < r:
    			print("C'est plus grand.")
    		elif int(entree) > r:
    			print("C'est plus petit.")
    	else:
    		print("Erreur")
    
    
    if i == 5:
    	print("Vous n'avez pas réussi à trouver le nombre.")
    else:
    	print("Bravo vous avez gagné, le nombre était bien " + str(r))

    Bref je n'arrive pas à en sortir, je ne voie pas du tout pourquoi alors j'espère que vous pourrez m'aider.

    -
    Edité par Wyshock 21 mai 2015 à 22:19:51

    • Partager sur Facebook
    • Partager sur Twitter
      21 mai 2015 à 22:46:13

      Bon au final j'ai trouvé un moyen pour contourner le problème:

      import random
      r = random.randint(0, 101)
      
      entree = 101
      i = 0
      
      while (entree != r):
      	entree = input("Choisissez un nombre : ")
      	if i == 4:
      		break
      	if entree.isdigit() == True:
      		i += 1
      		if int(entree) < r:
      			print("C'est plus grand.")
      		elif int(entree) > r:
      			print("C'est plus petit.")
      	else:
      		print("Erreur")
      
      
      if i == 4:
      	print("Vous n'avez pas réussi à trouver le nombre.")
      else:
      	print("Bravo vous avez gagné, le nombre était bien " + str(r))
      
      input("Appuyer sur une touche pour quitter. ")

      Mais je m'interroge toujours sur le problème, peut on mettre plusieurs variables dans les conditions de la boucle while ?Et comment résoudre le problème précédent sans rajouter le break ?

      • Partager sur Facebook
      • Partager sur Twitter
        21 mai 2015 à 22:58:18

        Tu as deux problèmes avec ton code:

        • Le premier, celui pour lequel tu postes ce sujet, au niveau de la condition de ta boucle: tu ne veux pas itérer tant que la réponse est fausse OU tant que tu as fait moins de 5 essais, mais tant qu'elle est fausse ET que moins de 5 essais ont été faits. Sinon, tu auras beau arriver au-delà de ces 5 essais, tu continueras la boucle car la réponse est fausse.
        • La réponse sera toujours fausse. entree étant une chaîne de caractères et r un nombre, ils seront toujours différents.
        • Partager sur Facebook
        • Partager sur Twitter
          21 mai 2015 à 23:12:31

          Ha oui d'accord je viens de corriger le problème avec le "or". Je dois avouer que ça porte quand même à confusion...

          Pour la comparaison entre "entree" et "r", non je confirme il n'y a pas de problème vue qu'on le désigne plus haut comme étant un nombre (ligne 4) de plus on vérifie avec entree.isdigit() qu'il s'agit bien d'un nombre que l'on écrit:

          entree = 101
          if entree.isdigit() == True:

          En tout cas merci de ton aide.

          -
          Edité par Wyshock 21 mai 2015 à 23:15:07

          • Partager sur Facebook
          • Partager sur Twitter
            21 mai 2015 à 23:35:09

            Et moi je te confirme qu'il y a un problème. Les variables en python sont typées dynamiquement, donc même si tu la définis comme un nombre au départ, tu la redéfinis ensuite comme une chaîne de caractères. De plus, la méthode isdigit est une méthode des chaînes de caractères: elle vérifie qu'elle représente un nombre, mais ça reste une chaîne. Tu fais bien int(entree) sur les autres lignes pour convertir ta chaîne en nombre.

            • Partager sur Facebook
            • Partager sur Twitter
              21 mai 2015 à 23:56:52

              Ok my bad je me contredis entre se que je dit et se que je fait désolé la fatigue.

              Je te remercie en tout cas de ton aide sinon je n'y serai jamais arrivé...

              -
              Edité par Wyshock 22 mai 2015 à 0:09:42

              • Partager sur Facebook
              • Partager sur Twitter

              Problème sur les boucles while.

              × 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