在while循环中控制流

时间:2019-10-24 18:06:13

标签: python while-loop logic

在解决Project Euler问题时,我遇到了以下与n更新有关的逻辑错误。

while(n<1000):
    #update n
    #do something with n
    #do stuff

vs

while(n<1000):
    #do something with n
    #do stuff
    #update n

在第一个实例中,即使违反了n <1000的条件,我最终还是用n进行了操作。

此逻辑错误有名字吗?这个错误有多普遍?

我试图寻找它,确实找到了有关变量递增和递减的信息。尽管这接近错误,但这并不是这里发生的一切。我在SO answer about for loop vs while loop的部分中找到了对此的引用,描述了与while循环相比,for循环如何更简洁直接。本质上,在使用while循环的情况下,我们在变量更新后最终会运行代码,该更新可能会埋在代码中的某个地方。

1 个答案:

答案 0 :(得分:1)

这并不总是一个错误:它取决于算法。在某些情况下,您知道n的原始值是合法的(因此您可以进入循环),但是您想在处理过程中更新并使用新值。您需要将代码与算法匹配。您的第二个代码块是规范的for等效代码,并且更为常见。

这属于“错误减1”的总标题。