【问题标题】:Control flow in a while loopwhile循环中的控制流
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 关闭 1 个错误,这就是我想要的。谢谢。
猜你喜欢
  • 1970-01-01
  • 2023-04-09
  • 2014-08-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多