跳出循环 - Python

Breaking outside the loop - Python

这对其他人来说可能是显而易见的。

使用 a > 10 会按预期破坏 loop,但 a == 10 不会。为什么会这样?我正在使用 Python 3.5.

代码片段:

from PIL import Image

im = Image.open('1.jpg')
px = im.load()
width, height = im.size

for a in range(width):
   for b in range(height):
      if a == 10:
         break
      print(a, b)

编辑: 当图像宽度达到 10 时,我试图停止迭代。输出如下所示:

...
9 477
9 478
9 479
10 0
10 1
10 2
10 3
...

您应该将 a == 10 放在外循环中,因为现在它只会中断内循环。

for a in range(width):
   if a == 10:
      break
   for b in range(height):
      print(a, b)

根据您的需要,您可能希望将其置于 for b in range(.. 循环之后。

if移到内循环外:

for a in range(width):
   if a == 10:
      break
   for b in range(height):
      print(a, b)

你只离开了内循环,而外循环保留了运行;所以当 a 达到 11 时,内循环再次开始打印。

使用 a > 10 你没有那个问题,因为所有内部循环立即停止,但它们都开始了。

除了使用 break 语句,您还可以使用 min(...) 来预先确定要循环多少次,例如:

for a in range(min(10, width)):
    for b in range(height):
        print(a, b)

这 运行 10 次,a 的值从 0 到 9 - 除非宽度小于 10,在这种情况下它循环 width 次。