繁体   English   中英

while循环中的控制流

[英]Control flow in a while loop

在解决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<1000 的条件,我最终还是使用 n 执行了操作。

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

我试图寻找它,我确实找到了关于预递增和后递增变量的东西。 虽然这接近错误,但这并不是这里发生的事情。 我在关于 for 循环与 while 循环的 SO 答案中找到了对此的参考,该部分描述了与 while 循环相比,for 循环如何更简洁和直接。 本质上,使用 while 循环,我们最终会在变量更新后运行代码,该变量可能隐藏在代码中的某个位置。

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

这属于“因 1 个错误而关闭”的总标题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM