数字游戏:赢不了:不会打印:你赢了,但结束脚本



我的问题是,当我得到正确的数字时,python脚本结束,但没有打印:You win!

import random 
number = random.randint(1,100) # This part works fine
guess = input('Guess a number between 1 and 100: ') #Asks question
guess = float(guess)
tries = 10 
while guess != number and tries > 0 :
    if guess < number:    # This part works fine
        print('Too low')
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if guess > number:
        print('Too high')     # This part is also good
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if tries == 0:
        print('You lose!')
        print('The answer was ' + str(number)) 
        continue
    if guess == number :
        print('You win!')   # Why doesn't this work?
        #Python ends at this line if I get it right, but doesn't print: You win!
    else :
       guess = input('Try Again: ')
       guess = float(guess)
pass     # WHILE*

只有11岁,几个月前刚开始编程,请帮助我!

如果猜测正确,则代码无法满足第一个条件:

while guess != number and tries > 0 :

如果猜测完成,循环将在 else 语句之后中断,并且永远不会返回到if条件检查猜测。

由于在输入正确答案之前无法继续循环,因此您始终可以按如下方式编写:

import random 
number = random.randint(1,100) # This part works fine
guess = input('Guess a number between 1 and 100: ') #Asks question
guess = float(guess)
tries = 10 
while guess != number and tries > 0 :
    if guess < number:    # This part works fine
        print('Too low')
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if guess > number:
        print('Too high')     # This part is also good
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if tries == 0:
        print('You lose!')
        print('The answer was ' + str(number)) 
        continue
    else :
       guess = input('Try Again: ')
       guess = float(guess)
print('You win!')

请记住,这其中有一个错误,会导致您在用户用完猜测后也打印您的 win。我决定把它留在这里,因为我认为它很容易修复,并且对你解决自己学习有好处。但是,如果您希望我为您执行此操作,请随时在评论中写下。

我还建议在您的帖子中使用代码注释。在这种情况下,我会为您的问题提供如下代码:

import random 
number = random.randint(1,100) # This part works fine
guess = input('Guess a number between 1 and 100: ') #Asks question
guess = float(guess)
tries = 10 
while guess != number and tries > 0 :
    if guess < number:    # This part works fine
        print('Too low')
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if guess > number:
        print('Too high')     # This part is also good
        tries = tries - 1
        print('You have %s tries left' % (tries))
    if tries == 0:
        print('You lose!')
        print('The answer was ' + str(number)) 
        continue
    if guess == number :
        print('You win!')       # Why doesn't this work?
                # Python ends at this line if I get it right, but doesn't print: You win!
    else :
       guess = input('Try Again: ')
       guess = float(guess)
pass     # WHILE*

在代码中进行比较时,通常最好尝试只问一次特定问题(进行比较(。 在这里,我展示了一种方法来重组你的两个问题(正确的猜测和尝试(,只做一次问题。

import random
number = random.randint(1, 100) 
guess = input('Guess a number between 1 and 100: ')  # Asks question
guess = float(guess)
tries = 10
while True:
    tries -= 1
    if guess < number:
        print('Too low')
        print('You have %s tries left' % (tries))
    elif guess > number:
        print('Too high')
        print('You have %s tries left' % (tries))
    else:
        print('You win!')
        break
    if tries == 0:
        print('You lose!')
        print('The answer was ' + str(number))
        break
    guess = input('Try Again: ')
    guess = float(guess)

最新更新