官术网_书友最值得收藏!

3.5 for循環和while循環

你可以把循環看作一段代碼不斷重復執行,這一行為只有在滿足某種中止條件時才會停止。例如,之前的代碼就不是一個循環,因為它只執行了一次,即我們只檢驗了a一次。

Python存在兩種類型的循環:

·for循環

·while循環

for循環具有一個明確的迭代次數。你可以把一次迭代看作對for循環中所包含指令的一次執行。for循環中聲明的迭代次數告訴程序循環中包含的指令應該被重復執行多少次。

那么怎樣創建一個for循環呢?很簡單,就像這樣:

首先通過寫下for關鍵詞來指定循環類型以達成初始化。然后創建一個變量i,它和整數范圍(1,20)相關聯。這指的是當我們首次進入循環的時候,i等于1,第二次執行的時候i等于2,如此反復,直到i等于19。為什么是19呢?這是因為Python中的范圍不包含上界,所以最后一次迭代的i會等于19。至于循環所包含的指令,在此例中僅僅是使用方法print()在控制臺中打印出變量i的值。還有一點需要注意的是,for循環之后的代碼需要等到for循環執行完畢才會被執行。

以下是開始執行代碼后所得到的結果:

可以看出我們的代碼顯示了大于0且小于20的每一個整數。

你也可以用for循環遍歷列表的元素,以下面這種方式進行:

這里我們回到一維列表L3。以上代碼對L3列表的每一個元素都進行了迭代并且顯示了它們。如果你運行這一代碼,你將會看到這個數組中從3到5的所有元素。

另一方面,while循環只有當條件不滿足時才會停止。只要所給定的條件被滿足,循環就會一直進行下去。我用以下的例子來闡述while循環:

這里我們創建了一個新的變量stop。這個變量的類型叫作布爾值(bool),因為布爾值只能被賦予兩種值——True或False。然后我們創建了一個變量i用來記錄while循環執行的次數。下一步,我們創建了一個while循環,只要stop為False,它就會不停地執行,并且僅當stop變為True的時候循環才會停止。

在這個循環中,i每增加1,i就會被顯示一次,直到i被檢查出大于或等于19。如果i大于或等于19,stop就變為True,一旦stop變成了True,循環就被打破(break)了。

通過執行這段代碼,你會看到和for循環例子中一樣的輸出:

還有一點需要注意,你還可以將for循環或while循環嵌套在另一個循環的內部。例如,如果要一個接一個地顯示我們之前創建的二維列表L4中的所有元素,你就得先創建一個for循環遍歷每一行,然后再創建另一個for循環(在前一個for循環里面)迭代這一行的每一個值,如下所示:

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

這一結果與列表L4一致。

總而言之,for循環和while循環使我們能夠簡單地處理重復性的任務。for循環總是需要一個預定義的迭代范圍:你需要明確循環什么時候會停止。while循環則是通過一個未明確定義的迭代范圍運行,有時很難判斷會發生多少次迭代。while循環只要其循環條件滿足,就會不斷運行。

練習

分別構建一個能計算正整數階乘的for循環和while循環。

提示:階乘是一個數學函數,它會返回小于等于該函數參數的所有正整數的乘積。公式如下:

其中:

·f(n)——階乘函數

·n——階乘問題所給的整數

階乘函數由數學符號!表示,例如:

本練習的答案可以在GitHub頁面的Chapter 03/For and While Loops/homework.py文件中找到。

主站蜘蛛池模板: 上蔡县| 于都县| 两当县| 福鼎市| 宽城| 旌德县| 思南县| 于都县| 封开县| 大埔区| 临西县| 定兴县| 刚察县| 昌黎县| 新平| 丹东市| 盘山县| 安陆市| 修武县| 黄梅县| 益阳市| 连州市| 泗水县| 勃利县| 德安县| 永清县| 汉中市| 江川县| 河源市| 昌乐县| 邮箱| 吉林市| 叙永县| 庐江县| 乐东| 武汉市| 城固县| 乐亭县| 梨树县| 芜湖县| 灵山县|