【问题标题】:Python continue with whilePython 继续 while
【发布时间】:2013-10-17 09:19:43
【问题描述】:

Python 中的 continue 似乎存在一些严重问题: 例如:

for i  in range(1,10):
    if i % 2 == 0:
         continue
     print i

按预期工作,但是

i = 0

while(i < 10):
    if i %2 == 0:   
        continue
    i += 1
    print i

while 循环永远不会终止!

【问题讨论】:

  • i % 2 == 0立即为真。
  • 经验法则:当您怀疑 Python 存在一些严重问题时,请三重检查您的假设。 Python 有一个continue 声明已经快 20 年了,我敢肯定任何严重的问题早就被发现了。

标签: python loops


【解决方案1】:

您的i 在第二个sn-p 中永远不会增加。去掉继续。

i = 0
while(i < 10):
    if i %2 == 0:   # i == 0; continue without increment the value of i <-- stuck here!
        continue
    i += 1
    print i

【讨论】:

  • 或在继续之前递增。
  • 为什么?只有当我是偶数时才会发生 continue 的事情,其余的应该可以工作。你能给出带有 while 循环的代码吗?就像​​我写的 for 循环一样。
  • i 在您的 while 循环中将始终保持为零(偶数)。
【解决方案2】:

您的while 循环与您的for 循环不同; for 循环从 1 开始并始终递增 i

移动i += 1 偶数测试之前:

i = 0

while(i < 10):
    i += 1
    if i % 2 == 0:   
        continue
    print i

因为0 % 2 == 0True,所以您总是继续,跳过i += 1print i 语句。

【讨论】:

  • 我认为继续意味着如果满足某个条件则跳过。所以它一直跳过i 但不增加它?我想如果它跳过了i,那么它会在for循环中转到下一个i。为什么会进入死循环?
  • 因为如果你也跳过i += 1 这意味着i 永远不会改变。这反过来意味着条件永远为真
猜你喜欢
  • 1970-01-01
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 2019-02-26
相关资源
最近更新 更多