Python 語言沒有提供 goto 語句來控制程序的跳轉,這種做法雖然提高了程序流程控制的可讀性,但降低了靈活性。為了彌補這種不足,Python 提供了 continue 和 break 來控制循環(huán)結構。本節(jié)先講解 break 的用法。
某些時候,需要在某種條件出現(xiàn)時強行中止循環(huán),而不是等到循環(huán)條件為 False 時才退出循環(huán)。此時,可以使用 break 來完成這個功能。
break 用于完全結束一個循環(huán),跳出循環(huán)體。不管是哪種循環(huán),一旦在循環(huán)體中遇到 break,系統(tǒng)就將完全結束該循環(huán),開始執(zhí)行循環(huán)之后的代碼。例如如下程序:
# 一個簡單的for循環(huán)
for i in range(0, 10) :
print("i的值是: ", i)
if i == 2 :
# 執(zhí)行該語句時將結束循環(huán)
break
運行上面程序,將看到 i 循環(huán)到 2 時即結束,因為當 i 等于 2 時,在循環(huán)體內遇到了 break 語句,程序跳出該循環(huán)。
對于帶 else 塊的 for 循環(huán),如果使用 break 強行中止循環(huán),程序將不會執(zhí)行 else 塊。例如如下程序:
# 一個簡單的for循環(huán)
for i in range(0, 10) :
print("i的值是: ", i)
if i == 2 :
# 執(zhí)行該語句時將結束循環(huán)
break
else:
print('else塊: ', i)
上面程序同樣會在 i 等于 2 時跳出循環(huán),而且此時 for 循環(huán)不會執(zhí)行 else 塊。
在使用 break 語句的情況下,循環(huán)的 else 代碼塊與直接放在循環(huán)體后是有區(qū)別的,即如果將代碼塊放在 else 塊中,當程序使用 break 中止循環(huán)時,循環(huán)不會執(zhí)行 else 塊;如果將代碼塊直接放在循環(huán)體后面,當程序使用 break 中止循環(huán)時,程序自然會執(zhí)行循環(huán)體之后的代碼塊。
Python 的 break 語句不能像其他語言一樣使用標簽,因此它只可以結束其所在的循環(huán),不可以結束嵌套循環(huán)的外層循環(huán)。
為了使用 break 語句跳出嵌套循環(huán)的外層循環(huán),可先定義 bool 類型的變量來標志是否需要跳出外層循環(huán),然后在內層循環(huán)、外層循環(huán)中分別使用兩條 break 語句來實現(xiàn)。例如如下程序:
exit_flag = False
# 外層循環(huán)
for i in range(0, 5) :
# 內層循環(huán)
for j in range(0, 3 ) :
print("i的值為: %d, j的值為: %d" % (i, j))
if j == 1 :
exit_flag = True
# 跳出里層循環(huán)
break
# 如果exit_flag為True,跳出外層循環(huán)
if exit_flag :
break
上面程序在內層循環(huán)中判斷 j 是否等于 i,當 j 等于 i 時,程序將 exit_flag 設為 True,并跳出內層循環(huán);接下來程序開始執(zhí)行外層循環(huán)的剩下語句,由于 exit_flag 為 True,因此也會執(zhí)行外層循環(huán)的 break 語句來跳出外層循環(huán)。
運行上面程序,將看到如下運行結果:
i的值為: 0, j的值為: 0
i的值為: 0, j的值為: 1
程序從外層循環(huán)進入內層循環(huán)后,當 j 等于 i 時,程序將 exit_flag 設為 True,并跳出內層循環(huán);接下來程序又執(zhí)行外層循環(huán)的 break 語句,從而跳出外層循環(huán)。
初級會計職稱中級會計職稱經濟師注冊會計師證券從業(yè)銀行從業(yè)會計實操統(tǒng)計師審計師高級會計師基金從業(yè)資格稅務師資產評估師國際內審師ACCA/CAT價格鑒證師統(tǒng)計資格從業(yè)
一級建造師二級建造師消防工程師造價工程師土建職稱房地產經紀人公路檢測工程師建筑八大員注冊建筑師二級造價師監(jiān)理工程師咨詢工程師房地產估價師 城鄉(xiāng)規(guī)劃師結構工程師巖土工程師安全工程師設備監(jiān)理師環(huán)境影響評價土地登記代理公路造價師公路監(jiān)理師化工工程師暖通工程師給排水工程師計量工程師
執(zhí)業(yè)藥師執(zhí)業(yè)醫(yī)師衛(wèi)生資格考試衛(wèi)生高級職稱護士資格證初級護師主管護師住院醫(yī)師臨床執(zhí)業(yè)醫(yī)師臨床助理醫(yī)師中醫(yī)執(zhí)業(yè)醫(yī)師中醫(yī)助理醫(yī)師中西醫(yī)醫(yī)師中西醫(yī)助理口腔執(zhí)業(yè)醫(yī)師口腔助理醫(yī)師公共衛(wèi)生醫(yī)師公衛(wèi)助理醫(yī)師實踐技能內科主治醫(yī)師外科主治醫(yī)師中醫(yī)內科主治兒科主治醫(yī)師婦產科醫(yī)師西藥士/師中藥士/師臨床檢驗技師臨床醫(yī)學理論中醫(yī)理論