这对其他人来说可能是显而易见的。
使用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
...
答案 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
次。