【发布时间】:2019-10-24 18:06:13
【问题描述】:
在解决Project Euler 的问题时,我遇到了以下与何时更新 n 相关的逻辑错误。
while(n<1000):
#update n
#do something with n
#do stuff
对
while(n<1000):
#do something with n
#do stuff
#update n
在第一种情况下,即使违反了 n
这个逻辑错误有名字吗?这个错误有多常见?
我试图寻找它,我确实找到了关于变量前递增和后递增的内容。虽然这接近错误,但这并不是这里发生的事情。我在 SO answer about for loop vs while loop 中找到了对此的参考,该部分描述了与 while 循环相比,for 循环如何更简洁和直接。本质上,使用 while 循环,我们最终会在变量更新后运行代码,这可能会隐藏在代码中的某个位置。
【问题讨论】:
-
这里的简单规则是 while 循环评估条件,然后运行其中的所有内容。如果您将 n 更改为不满足 while 条件的内容,则循环将完成其中的剩余代码,因为
n的表达式仅在迭代结束时进行评估,并决定我们是否再次开始循环 -
那里没有逻辑错误,这就是
while的工作原理。
标签: python while-loop logic