【发布时间】:2021-06-18 15:14:39
【问题描述】:
我最近才开始探索python。
所以,我在 python 中读到了 while else ,这听起来很棒,但我无法执行一个简单的代码,我错过了什么?
环境:python 3.8.5 (anaconda)
guess = 0
answer = 5
attempts = 0
while answer != guess:
attempts += 1
guess = int(input("Guess: "))
if attempts >= 3:
break
else:
print("You Failed")
根据我的理解,它应该在输入 3 次而不是 5 次后打印“You Failed”。但在执行时,它不会那样做。
对此的任何见解都会非常有帮助。
谢谢。
【问题讨论】:
-
来自顶级答案here:“else 子句仅在您的 while 条件变为 false 时执行。如果您跳出循环,或者如果引发异常,则不会执行。”
-
这能回答你的问题吗? Else clause on Python while statement
-
所以你的目的倒退了。当然,这是一个难以有意义地阅读的结构。老实说,我避免使用它,因为它是一种角落用例,而且我真的不认为它具有直观意义。我想如果您直接将循环与
if进行比较,这是有道理的,但循环不是简单的条件。 -
您在检查
answer == guess之前增加了attempts的值。当它进入 while 循环时,尝试次数已经为 1。所以你只给自己 2 次尝试。这是您的代码中要修复的另一个问题 -
好的,因为我在那里添加了一个 break 语句,while 条件变为 True 并且 else 部分没有执行。那么在这种特殊情况下,我应该在 while if 本身中添加 else 部分吗?像过去一样?所以这不是这个概念的好例子。对吗?
标签: python python-3.x