天天看點

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

[ 導讀 ]本文重點講述for語句和while語句。for語句屬于周遊循環,while語句屬于當型循環。除了兩個循環語句外,還介紹了break、continue與pass三個用于控制循環結構中的程式流向的語句。在此基礎之上,也介紹了清單推導式,這是一種特殊的循環語句。

循環語句又稱為重複結構,用于反複執行某一操作。面對大數量級的重複運算,即使借助計算機,重複編寫代碼也是費時的,這時就需要借助循環語句。使用循環語句一般要用到條件判斷,根據判斷式的傳回值決定是否執行循環體。

循環分為兩種模式,一種是條件滿足時執行循環體,另一種則相反,在條件不滿足時執行循環體。前者稱為當型循環,後者稱為直到型循環。

在圖1中,虛線框内是一個當型循環結構,此結構包含判斷條件和循環體,以及連接配接各部分的流向線。程式執行時,先判斷條件的真假。判斷為真時,則執行循環體;判斷為假時,不再執行循環體,循環結束。當型循環先進行條件判斷,如果滿足循環條件,再執行循環體,是以又被稱為前測試型循環。

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

在圖2中,虛線框内是一個直到型循環結構,此結構包括判斷條件和循環體,以及連接配接各部分的流向線。程式執行時,先執行一次循環體,再判斷執行循環的結果是否滿足判斷條件。滿足條件時,再次執行循環體;不滿足條件時,不再執行循環體。直到型循環在執行判斷前先進入循環體運作,是以又被稱為後測試型循環。

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

Python中主要有兩種循環語句,即for語句和while語句。前者采用周遊的形式指定循環範圍,後者視判斷式傳回值的情況而決定是否執行。要更靈活地操縱循環的流向,就要用到break、continue和pass等語句。

01 for

for循環是疊代循環,在Python中相當于一個通用的序列疊代器,可以周遊任何有序序列,如str、list、tuple等,也可以周遊任何可疊代對象,如dict。不同于C語言,Python中的for語句将周遊系列中的所有成員,周遊順序為成員在系列中的順序。需要注意,在for循環中改變任何序列的内容都是危險的!

for語句不屬于當型循環或直到型循環,它周遊序列對象内的元素,對每個元素運作一次循環體,循環的步數在程式開始執行時已經指定,不屬于條件判斷。

在for語句中,for和in搭配組成for-in循環結構,for-in循環依次把list或tuple中的每個元素疊代出來。for語句的基本文法格式如下:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

for語句常用的文法格式及其參數說明如下所示:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

程式的執行從“for變量in序列”開始,該語句把序列中的每個元素代入變量,執行一遍操作語句1,重複的次數就是序列中元素的個數。

為了展示for循環的周遊功能,依次列印list中的姓名,如代碼清單1所示。

代碼清單1:for語句周遊提取str
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

for語句同樣可以實作dict的周遊方法,如代碼清單2所示。

代碼清單2:for語句周遊查詢dict
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

從代碼清單2可以看到,for語句中用于周遊的“變量”不僅可以是Python預設的指代詞,也可以是正常的變量。

和條件語句一樣,循環語句也可以使用嵌套,作用同樣是豐富程式的功能性。設計一個成績錄入系統,就必然要錄入姓名和課程這兩類資訊,僅靠一層循環是無法實作的,可使用兩層循環結構,如代碼清單3所示。

代碼清單3:嵌套for語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

理論上,for循環也可以無限嵌套,但并不推薦。

02 while

while語句是Python中最常用的遞歸結構。差別于for循環,while循環結構包含條件判斷式,是一種條件循環,屬于當型循環。

while語句最基本的形式包括一個位于頂部的布爾表達式,一個或多個屬于while代碼塊的縮進語句。也可以在結尾處包含一個else代碼塊,它與while代碼塊是同級的,組成while-else的形式。while語句的基本文法格式如下。

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

while語句常用的參數及其說明如下所示:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

執行while語句時,隻要頂部的條件表達式傳回真值,就一直執行while部分嵌套的遞歸代碼,當條件表達式傳回假值時,不再執行操作語句,程式跳出while結構。

while語句的基礎使用方法如代碼清單4所示。

代碼清單4:while語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

如果布爾表達式不帶有<、>、==、!=、in、not in等運算符,僅僅給出數值之類的條件,也是可以的。當while後寫入一個非零整數時,視為真值,執行循環體;寫入0時,視為假值,不執行循環體。也可以寫入str、list或任何序列,長度非零則視為真值,執行循環體;否則視為假值,不執行循環體。

如果布爾表達式始終傳回1,while語句就變成無限循環,如代碼清單5所示。

代碼清單5:while語句無限循環
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

運作代碼清單5,将會不斷列印出“循環”。代碼清單5展示了制造無限循環的兩種方式,既可以在while後寫入一個固定的真值,也可以寫入一個一直生成真值的表達式。要終止無限循環,可以使用快捷鍵Ctrl+C中斷循環的執行,也可以用循環終止語句,這将在下文中介紹。

靈活地利用while語句中的布爾表達式及代入表達式的遞歸值,可以實作特别的功能,如代碼清單6所示。

代碼清單6:while語句實作str截取
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

代碼清單6包含一個自減疊代值,它并不通過明顯的運算符實作自減,而是利用索引法則,x變量一直從str中第2個值截取至結尾,每次都将位于str最前面的字元截取掉,最終隻剩下一個字元時,再次截取就隻有空的結果,布爾表達式傳回0,循環終止。

通過代碼清單5和代碼清單6可以看到,靈活地利用遞歸式,可以實作程式流向的控制。

while循環同樣可以使用嵌套,嵌套的while循環實作成績錄入系統如代碼清單7所示。

代碼清單7:嵌套while語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

代碼清單7的第1層while語句用于錄入人名,第2層則在各人名下錄入多門成績,布爾表達式決定錄入的人數和課程數。

03 break、continue與pass

在前兩節中,已經介紹了Python中的兩種循環語句。循環語句中還可以嵌入break、continue和pass語句,以靈活地改變流向,實作更多功能。

1. break

在Python中,break語句用于終止循環語句的執行。使用該語句時,即使循環條件判斷為真,或序列未被完全遞歸,循環語句也會被立刻停止。

break語句一般配合條件判斷使用,因為程式的終止必須是在某一條件被滿足時執行。break語句在for循環和while循環中的使用如代碼清單8所示。

代碼清單8:break語句的使用
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

從代碼清單8可以看到,break語句用于for循環和while循環是有差別的。用于for循環時,隻終止周遊中某一次的循環體執行;用于while循環時,整個循環被終止。

break隻終止本層循環,如有多層嵌套的循環,在其中一層循環中寫入break,隻在這層循環中生效,程式将跳到上一層循環中繼續運作,如代碼清單9所示。

代碼清單9:break語句用于嵌套循環結構
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

在代碼清單9中,break語句在條件判斷式“if j>1:”後被使用,是以盡管j的指定周遊次數為10,實際上周遊隻運作兩次。由于break語句隻終止本層循環的運作,i依舊周遊執行了兩次,而不是在第1次周遊過程末尾終止。

2. continue

Python中的continue語句用于跳出目前循環,并執行下一次循環,而break跳出整層循環,兩者的功能具有明顯差別。

如果一段代碼中包含continue語句,循環執行至continue處時,先忽略本次循環,在本層仍滿足條件的剩餘循環次數中繼續執行,不會終止這一層循環。實際上,如果在某一層的每次循環中都使用continue語句,就相當于使用break語句。

列印一個數表,要不列印某些指定的數字,或隻列印某類數,就可以使用continue語句跳過一些循環次數,該語句在for循環和while循環中都可以自由地使用,如代碼清單10所示。

代碼清單10:continue語句用于循環結構
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

break語句一旦用于嵌套循環中的第n層,該層循環會被終止,但在執行第n-1層循環時,仍會創造一個第n層循環并執行。continue語句同樣如此,隻是仍會執行某一層的剩餘部分。是以,無論使用哪種循環終止語句,都隻會影響使用終止語句的那一層循環,而不會幹擾到其他層。continue語句用于循環的例子如代碼清單11所示。

代碼清單11:continue語句用于嵌套循環結構
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
3. pass

pass是空語句,不做任何操作,隻起到占位的作用,其作用是為了保持程式結構的完整性。盡管pass語句不做任何操作,但如果暫時不确定要在一個位置放上什麼樣的代碼,可以先放置一個pass語句,讓代碼可以正常運作。pass語句并非循環或者條件語句的一部分,但與break、continue在代碼形式上有些類似。

使用pass語句周遊輸出str及數值計算,如代碼清單12所示。

代碼清單12:pass語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

從代碼清單12可以看到,Python在“P”和“t”之間占位,當循環周遊到“y”時不做任何操作;當i等于3時,幂運算不執行,但不影響其他數值。上述兩個代碼如果在pass的位置缺失,程式将無法執行,因為判斷條件沒有給出相應的執行語句,會導緻邏輯出錯。使用pass語句占位,一方面為了讓程式正常執行,另一方面也是為了友善以後補充操作語句。

04 清單推導式

推導式是可以從一個資料序列建構另一個新的資料序列的結構體,能夠非常簡潔地構造新的變量。清單推導式是其中最常用的類型。

清單推導式又稱為清單解析式,是Python疊代機制的一種應用,也是一種高效建立列list的方式,可以動态地建立list。由于清單推導式必須用到周遊循環,是以屬于一種特殊的循環。

使用清單推導式時,需要将推導式寫在[]中。list中的元素可以來源于其他類型序列、可疊代對象或自建的滿足一定條件的序列。使用清單推導式的好處是代碼更加簡潔,實作效率更高。

清單推導式的基本文法格式如下:

[操作語句 for變量 in 序列 if 條件表達式]
           

清單推導式常用的參數及其說明如下所示:

  • 操作語句:接收操作語句,表示執行一段代碼。無預設值
  • 條件表達式:接收布爾表達式,表示判斷條件是否成立。無預設值
  • 序列:接收序列,表示周遊範圍。無預設值

清單推導式可以不包含條件表達式,隻做周遊,生成list,如代碼清單13所示。

代碼清單13:使用清單推導式生成list
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

輸出結果:

C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

在代碼清單13中,除了清單推導式的簡單形式,還說明了清單推導式中可以使用多樣的函數和變量類型。另外,清單推導式中也可以包含條件語句,如代碼清單14所示。

代碼清單14:包含條件語句的清單推導式
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

清單推導式最大的優點還是簡潔,這需要與正常的程式設計方式進行對比。如代碼清單15所示,要建立一個平方數組成的list,這裡的兩種方式是等價的,但清單推導式的方式顯然代碼更加簡潔。

代碼清單15:正常方式與清單推導式對比
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

清單推導式中同樣可以實作嵌套循環,如代碼清單16所示。

代碼清單16:包含嵌套循環的清單推導式
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句
C++中如何控制語句隻執行一次_值得收藏!16段代碼入門Python循環語句

代碼清單16所示的清單推導式将兩個不同list中的元素整合到了一起。清單推導式中包含一對括号,在括号中有一個表達式,表達式後面緊跟一條for語句,然後是零條或多條for語句或if語句。通過for語句和if語句計算出表達式,結果作為新list的元素。

繼續閱讀