[英]How does break work in a for loop?
我是 Python 的新手,我對“break”在 for 循環中的工作方式感到困惑。 Python 文檔( break 和 continue 語句)中有一個示例計算范圍 (2, 10) 內的素數:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
輸出是:
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
但是,當我在代碼中取消縮進“break”時:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
輸出將是:
2 is a prime number
4 equals 2 * 2
6 equals 2 * 3
8 equals 2 * 4
你能解釋一下在我取消縮進“break”之后代碼中發生了什么嗎? 謝謝
當然 - 簡單地把“Break”去掉就意味着它不再受制於它之前的“if”。
代碼讀取 if 語句,對其進行操作,然后無論該 if 語句是真還是假,它都會執行“break”並退出 for 循環。
在第一個示例中,如果 n%x==0 語句為真,代碼只會退出“for”循環。
嘗試執行這段代碼 - 它可能會更清楚:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
print('loop still running...')
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
對比:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
print('loop still running...')
else:
# loop fell through without finding a factor
print(n, 'is a prime number')
我相信輸出會幫助您了解正在發生的事情。 #1 僅在滿足 if 條件時才會中斷,而無論是否滿足 if 條件,#2 都會中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.