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!

Était-ce utile?

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:

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top