如何學python-第八課 流程式控制制-For,While,循環語句,初見『函數』

循環語句

也許你會問,什麼是『循環』?在腳本程序里,循環就是『在一定情況下一次又一次的執行某些代碼』。舉個例子來說,假設你很餓,桌上有好多好多個饅頭,當你依舊餓的時候,你就會一次又一次的吃饅頭。這整個吃過程叫做一個循環(loop),每吃一次的過程叫做一次迭代(iteration)。某些人把loop和iteration都翻譯做循環,其實他們是有差異的,就像method和function(method和function的差異還沒這麼大)。

在正式介紹循環語句之前,我們先學點預備知識。

函數

什麼是函數?這是一個不太好回答的問題。我們暫且把函數理解為『我們傳遞一些消息進去,就可以獲取一些返回信息』的這麼一個東西。以下這兩個函數將時常和循環一起使用:

  • .range()

  • .len()

我們先介紹一下range()函數。range()函數的返回值取決於我們傳給它的參數。Range()函數可以支持1到3個參數,分別會有不同的效果。我們會介紹給range函數傳入一個參數和兩個參數的時候。傳入三個參數的情況可以參考一下這篇文章,寫的很不錯:

cnblogs.com/kaituorensh

這裡我們先使用兩個參數的range()函數進行演示,稍後演示一個參數的range()。兩個參數的range函數會把第一個參數作為下界,第二個參數作為上界,返回一個含有數值類型的列表:

注意,range函數會包含下界,但不包含上界:

如果我們只給range函數傳遞一個參數,那麼range函數會把下界默認設定成0,把我們傳遞進去的參數設定為上界。

下面我們來看看len()函數。

在本文章的後半部分,我們會使用下面這個變數來輔助演示:

len()函數十分簡單。它接收一個變數的名稱作為參數,然後返回這個變數的長度,無論這個變數是string類型,list類型亦或是dictionary類型(稍後介紹)。使用演示如下:

我們可以看到,len函數返回了test變數里的元素個數。

現在,讓我們把上面那個混起來用試試看:

這看起來可能沒什麼用。但是,如果你還記得上節課的內容的話,你會發現返回的值恰好是我們的test列表的索引值。這給我們操作特定變數的時候特別的有用。

好了,熱身完畢,我們現在開始講循環。首先從for說起。

For 循環

For循環的厲害之處就在於它可以簡便的操縱list里的所有值。另外,for在執行的時候只會循環一次,這也意味著列表結束的時候循環也就結束了。我們先看看它是怎麼工作的:

i會再循環的進行過程中,按照順序,分別取上test列表裡的每一個列表項的值,每取一次,就執行一次print i;取過一遍之後,循環也就結束了。現在我們換一種方法實現以上功能:

通過range()與len()的組合,我們實現了和上面完全一樣d功能。雖然出處依然沒有變化,但是我們現在可以操縱list里的每一個值了。

我們來看看另一個循環語句,while。

While循環

While語句比for語句要靈活,也需要更多的技巧。While語句需要與條件判斷語句一起使用,就像我們原先學習過的if語句一樣。

While語句只會在兩種情況下結束循環,一種情況是你手動把它結束,要麼是判斷語句反悔了false。如果條件判斷語句一直為真,那麼循環語句將會一直循環下去,這就是傳說中的死循環。我們來試試while語句:

當我們執行它的時候,程序會持續輸出」Test is equal to True!」,除非我們手動結束這個過程。以上的語句會得到下面的結果:

篇幅所限,我們只截了一部分上來。除非你刻意這麼寫(為了某些惡意的目的),死循環這種情況是不應該出現的。好啦,今天就講到這裡。

練習

用各種各樣的方式練習今天學到的知識,確保你理解了你學到的東西,而不是在死記硬背。別怕實驗,多練才能熟練。

======================================================================

原文系列鏈接:null-byte.wonderhowto.com

最新一期的<如何學python>已經在微信訂閱號搶先發布,心急的同學進入訂閱號(方法在下方)即可。

由於教程仍在翻譯過程中,在整套教程完結前,感興趣的同學請關注我的微信訂閱號(xuanhun521,下方二維碼),我會第一時間在訂閱號推送圖文教程和視頻教程。問題討論請加qq群:Hacking (1群):303242737 Hacking (2群):147098303。

點擊打開二維碼

關注之後,請回復「Python」,獲取更多內容。


推薦閱讀:

從硬碟里翻出來2010年寫的帶IntelliSense編輯器
eval 之源
邏輯表達式的短路是如何實現的?
for 循環為什麼不支持小數?
Scala以cascade的方式調用函數有什麼不妥嗎?

TAG:Python | 编程 | 玄魂工作室 |