簡體   English   中英

break 如何在 for 循環中工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM