突破循环 - Python

时间:2016-12-22 11:00:25

标签: python for-loop break

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

使用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
...

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:3)

if移到内循环之外:

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

你只留下了内圈,而外圈一直在跑;所以当达到11时,内环再次开始打印。

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

答案 2 :(得分:2)

您可以使用min(...)预先确定循环次数,而不是使用break语句,例如:

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

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