python Débutant - coincé dans une boucle
-
20-09-2019 - |
Question
J'ai deux programmes de begininer, à la fois en utilisant la fonction « while », on travaille correctement, et l'autre me reste bloqué dans une boucle. Le premier programme est ce;
num=54
bob = True
print('The guess a number Game!')
while bob == True:
guess = int(input('What is your guess? '))
if guess==num:
print('wow! You\'re awesome!')
print('but don\'t worry, you still suck')
bob = False
elif guess>num:
print('try a lower number')
else:
print('close, but too low')
print('game over')``
et il donne la sortie prévisible;
The guess a number Game!
What is your guess? 12
close, but too low
What is your guess? 56
try a lower number
What is your guess? 54
wow! You're awesome!
but don't worry, you still suck
game over
Cependant, j'ai aussi ce programme, qui ne fonctionne pas;
#define vars
a = int(input('Please insert a number: '))
b = int(input('Please insert a second number: '))
#try a function
def func_tim(a,b):
bob = True
while bob == True:
if a == b:
print('nice and equal')
bob = False
elif b > a:
print('b is picking on a!')
else:
print('a is picking on b!')
#call a function
func_tim(a,b)
Quelles sorties;
Please insert a number: 12
Please insert a second number: 14
b is picking on a!
b is picking on a!
b is picking on a!
...(repeat in a loop)....
Quelqu'un peut-il s'il vous plaît laissez-moi savoir pourquoi ces programmes sont différents? Merci!
La solution
Dans le second programme que vous ne donnez jamais à l'utilisateur une chance de choisir deux nouveaux numéros si elles ne sont pas égaux. Mettez les lignes où vous obtenez l'entrée de l'utilisateur dans la boucle, comme ceci:
#try a function
def func_tim():
bob = True
while bob == True:
#define vars
a = int(input('Please insert a number: '))
b = int(input('Please insert a second number: '))
if a == b:
print('nice and equal')
bob = False
elif b > a:
print('b is picking on a!')
else:
print('a is picking on b!')
#call a function
func_tim()
Autres conseils
Dans le second exemple, l'utilisateur ne reçoit pas une chance d'entrer dans une nouvelle estimation dans la boucle, de sorte a
et b
restent les mêmes.
dans votre 2ème programme, si b > a
, vous retournerez à la boucle parce que bob
est encore true
. Vous avez oublié de demander à l'utilisateur d'entrer à nouveau .. essayer cette façon
def func_tim():
while 1:
a = int(input('Please insert a number: '))
b = int(input('Please insert a second number: '))
if a == b:
print('nice and equal')
break
elif b > a:
print('b is picking on a!')
else:
print('a is picking on b!')
func_tim()
Votre deuxième programme ne permet pas à l'utilisateur de deviner si son entrer à nouveau ce n'est pas correct. Mettez le input
dans la boucle while.
indice supplémentaire. Ne faites pas de chèques comme variable == True
, dites while variable: