跳出循环 - 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
次。
这对其他人来说可能是显而易见的。
使用 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
次。