- Python基礎(chǔ)及應(yīng)用
- 呂云翔 姚澤良 張揚等編著
- 872字
- 2021-10-27 15:16:28
3.2 循環(huán)結(jié)構(gòu)
Python的循環(huán)結(jié)構(gòu)有兩個關(guān)鍵字可以實現(xiàn),分別是while和for。
3.2.1 While循環(huán)
while循環(huán)的常見語法是:

這個代碼塊表達的含義就是,如果條件滿足就執(zhí)行代碼塊,直到條件不滿足為止;如果條件一開始不滿足,那么代碼塊一次都不會被執(zhí)行。
我們看一個例子:

運行這段代碼可以得到輸出如下:

對于while循環(huán),其實和if語句的執(zhí)行結(jié)構(gòu)非常接近,區(qū)別就是從單次執(zhí)行變成了反復(fù)執(zhí)行,以及條件除了用來判斷是否進入代碼塊以外,還被用來判斷是否終止循環(huán)。
對于上面這段代碼,結(jié)合輸出不難看出,前五次循環(huán)的時候a<5為真,因此循環(huán)繼續(xù),而第六次經(jīng)過的時候,a已經(jīng)變成了5,條件就為假,自然也就跳出了while循環(huán)。
3.2.2 For循環(huán)
for循環(huán)的常見語法是:

Python的for循環(huán)比較特殊,它并不是C系語言中常見的for語句,而是一種foreach(其他語言中用于遍歷迭代對象的語法)的語法,也就是說本質(zhì)上是遍歷一個可迭代的對象,這聽起來實在是太抽象了,我們看一個例子:

運行后這段代碼輸出如下:

for循環(huán)實際上用到了迭代器的知識,但是在這里展開還為時尚早,我們只要知道用range配合for可以寫出一個循環(huán)即可,比如計算整數(shù)0~100的和:

那如果想計算整數(shù)50~100的和呢?實際上range產(chǎn)生區(qū)間的左邊界也是可以設(shè)置的,只要多傳入一個參數(shù):

有時候我們希望循環(huán)是倒序的,比如從10循環(huán)到1,那該怎么寫呢?只要再多傳入一個參數(shù)作為步長即可:

也就是說range的完整用法應(yīng)該是range(start,end,step),循環(huán)變量i從start開始,每次循環(huán)后i增加step,直到超過end跳出循環(huán)。
3.2.3 兩種循環(huán)的轉(zhuǎn)換
其實無論是while循環(huán)還是for循環(huán),本質(zhì)上都是反復(fù)執(zhí)行一段代碼,這就意味著二者是可以相互轉(zhuǎn)換的,比如之前計算整數(shù)0~100的代碼,也可以用while循環(huán)完成,如下所示:

但是這樣寫之后至少存在三個問題:
● while寫法中的條件為i<=100,而for寫法是通過range( )來迭代,相比來說后者顯然更具可讀性。
● while寫法中需要在外面創(chuàng)建一個臨時的變量i,這個變量在循環(huán)結(jié)束依舊可以訪問,但是for寫法中i只有在循環(huán)體中可見,明顯while寫法增添了不必要的變量。
● 代碼量增加了兩行。
當(dāng)然這個問題是辯證性的,有時候while寫法可能是更優(yōu)解,但是對于Python來說,大多時候推薦使用for這種可讀性強也更優(yōu)美的代碼。
- 精通JavaScript+jQuery:100%動態(tài)網(wǎng)頁設(shè)計密碼
- Python應(yīng)用輕松入門
- PLC編程與調(diào)試技術(shù)(松下系列)
- Teaching with Google Classroom
- Android系統(tǒng)原理及開發(fā)要點詳解
- Linux C編程:一站式學(xué)習(xí)
- Test-Driven Machine Learning
- Python期貨量化交易實戰(zhàn)
- Android編程權(quán)威指南(第4版)
- 軟件測試技術(shù)
- Mastering PowerCLI
- Clojure Web Development Essentials
- RESTful Web API Design with Node.js
- LabVIEW數(shù)據(jù)采集(第2版)
- 微服務(wù)設(shè)計