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.
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 ?
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.
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:
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.
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
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.
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique
entwanne — @entwanne — Un zeste de Python — La POO en Python — Notions de Python avancées — Les secrets d'un code pythonique