【python系統學習09】while循環
- 2020 年 2 月 14 日
- 筆記
while循環
和for一樣,while也是實現循環程式碼的一種。
偽程式碼
先來看一段while的偽程式碼,了解下其語法格式。
1# 偽程式碼 2while 條件語句: 3 條件成立執行的[while子句],位於縮進後邊 4else: 5 循環完畢執行的程式碼塊,位於縮進後邊
學過js的能從上邊的程式碼中看出來,這和js的while基本無差。 將程式碼直譯過來都是:當XXX條件成立的時候,執行XXX語句。直到條件不成立,就跳過while語句。
只不過python的特色是循環語句最後都會有自己的else語句。 當while條件語句為「假」、循環執行完畢過後,流程都會走到else裡邊執行縮進後的任務。就好像出關口、必經之路的意思。
示例程式碼
來看一段示例程式碼
1whileVal = 1 2while whileVal <= 3: 3 print('while子句:', whileVal) 4 whileVal += 1 5else: 6 print('while執行完畢,跳出循環後執行了我', whileVal) 7 8# 列印結果 9# while子句: 1 10# while子句: 2 11# while子句: 3 12# while執行完畢,跳出循環後執行了我 4
在上邊的程式碼中,其執行流程大致如下:
whileVal變數一開始是1。while的循環條件是變數小於等於3。 此時1小於3條件成立,執行while子句的程式碼。列印「while子句: 1」 然後變數whileVal遞增一位,變成2。
再次返回去判斷條件,2<=3條件成立,繼續執行while子句,列印「while子句: 2」 然後變數whileVal遞增一位,變成3。
再次返回去判斷條件,3<=3條件成立,繼續執行while子句,列印「while子句: 3」 然後變數whileVal遞增一位,變成4。
再次返回去判斷條件,4<=3條件不成立,不執行while子句結束循環並跳出
於是程式碼向下,執行else里的程式碼塊,列印「while執行完畢,跳出循環後執行了我 4」 並且我們可以通過列印明確得知,whileVal此時為4了。
和for循環的不同
while的知識點很簡單,應用起來也很簡單。 不過同樣作為循環,他和for循環有什麼不同的呢?語法里為什麼有了for還要有個while呢?
我們先來想想。上邊的程式碼用for實現怎麼寫呢? 下邊是我的寫法
1for forVal in range(1, 4): 2 print('for子句:', forVal) 3else: 4 print('for執行完畢,跳出循環後執行了我', forVal) 5 6# 列印結果如下: 7# for子句: 1 8# for子句: 2 9# for子句: 3 10# for執行完畢,跳出循環後執行了我 3
觀察發現,for最後的變數值為3。 也就是for在特定循環次數內,在你指定循環次數的情況下進行的迭代。
而while是你可以指定一個已經確定的臨界值,只要在臨界值裡邊的,都會執行while。即當while語句一直成立的時候,while子句就會一直執行。 而更厲害的是,這個臨界值可以是我們知道的(比如上邊限制小於等於3,就是我們設定的已知臨界值)。 當然,這個臨界值也可以是我們不知道的。比如讓用戶輸入的情況,也比如無限循環的情況。程式碼分別如下。
根據用戶輸入判斷條件
以下程式碼,是條件根據用戶輸入進行判斷的例子。
1myAge = input('請猜一下我的年齡:') 2while myAge != '20': 3 print('不對!') 4 myAge = input('請再猜一下我的年齡:') 5else: 6 print('猜對啦!恭喜你!')

我的人機對話過程
只要用戶輸入的不是20,這個循環中while子句的內容就會一直執行。
而當用戶輸入20時,條件不成立(myAge=20,而不是!=20),則跳出循環。執行else內容。
無限循環
利用while,我們還可以寫一段死循環程式碼。
1# 請謹慎嘗試! 2while True: 3 print('我停不下來了~')
在條件語句那裡,可以填表達式,同樣也可以填寫布爾值。
當我們填寫布爾值True
時,因為條件一直成立。循環永遠不停,就形成了我們常說的死循環程式碼。
continue跳過本次循環
同for,continue語句在while中的使用作用一樣是跳出本次單輪的循環、繼續下次的循環。 不再贅述,直接上程式碼:
1continueVal = 1 2while continueVal <= 5: 3 continueVal += 1 4 if continueVal == 3: 5 print('if條件中') 6 continue 7 else: 8 print('continueVal的值:',continueVal) 9else: 10 print('循環結束') 11 12# 列印結果: 13# continueVal的值: 2 14# if條件中 15# continueVal的值: 4 16# continueVal的值: 5 17# continueVal的值: 6 18# 循環結束
跳過了==3時的循環, 並且列印了while語句所對應的else語句的內容。
break跳出循環
同for,break語句在while中的使用作用一樣是跳出循環。 不再贅述,直接上程式碼:
1breakVal = 1 2while breakVal <= 5: 3 breakVal += 1 4 if breakVal == 3: 5 print('if條件中') 6 break 7 else: 8 print('breakVal的值:',breakVal) 9else: 10 print('循環結束') 11 12# 列印結果: 13# breakVal的值: 2 14# if條件中
條件==3時,直接結束循環, 並且不再列印while語句所對應的else語句了。
練習題
實現1到10的數分別乘以100
分別用for循環和while循環倆種方案實現