为什么while循环是无限的,而不是在3次迭代后停止?

时间:2018-10-19 11:16:46

标签: python python-3.x

程序应找出猜中的单词是否正确。经过3次错误尝试后,它会打印邀请循环。为什么第3次迭代后while循环未完成?

secret_word = "python"
guess = ""
attempt = 1

while guess != secret_word:
    if attempt < 3:
        guess = input("your word: ")
        attempt += 1

    else:
        print("time up!")

print("win!")

https://i.stack.imgur.com/k0L4w.png

2 个答案:

答案 0 :(得分:0)

一旦attemp >= 3,您的while循环将开始执行else子句。关键是循环没有结束,因为正如用户尚未猜测到的那样,猜测不等于secret_word。

解决该问题的一种方法是在break之后添加print('time up!')语句。但是,这也会打印'win'。为了防止出现最后一点,请将print('win')包裹在else语句中,使其变为:

print('win')

进入:

else:
    print('win')

如果循环正常退出(条件为假)并且不通过break语句或异常退出,则执行while循环中的else条件。

答案 1 :(得分:0)

secret_word = 'python'
attempts = 3

for attempt in range(attempts):
    guess = input(f'Attempt {attempt+1}: ')
    if guess == secret_word:
        print('You won!')
        break
    else:
        print('try again...')