9 while 迴圈
9.1 while 迴圈結構
一個 while
迴圈結構如下:
while 某些條件:
# 每次迭代執行的程式
在每一次的迭代之前,Python 都會檢查某些條件是否成立,假如判斷結果為布林 True
就會執行每次迭代執行的程式;一但條件不成立,意即判斷結果為布林 False
迴圈就會終止。
我們試著寫輸出美國影集六人行(Friends)六個主要演員的 while
迴圈:
starrings = ["Jennifer Aniston", "Courteney Cox", "Lisa Kudrow", "Matt LeBlanc", "Matthew Perry", "David Schwimmer"]
i = 0
while i < 6:
print starrings[i]
i += 1
## Jennifer Aniston
## Courteney Cox
## Lisa Kudrow
## Matt LeBlanc
## Matthew Perry
## David Schwimmer
很重要的是 i += 1
,假如忘記寫這一行程式,我們的 while
迴圈會無限次數地一直輸出 “Jennifer Aniston”,原因是我們的判斷條件永遠成立(0 小於 6),所以會不斷地執行 print starrings[0]
。
9.1.1 兩種迴圈的運用時機
我們何時應該運用 for
迴圈、何時應該運用 while
迴圈呢?一個簡單的判斷是:假如我們明確知道程式的迭代次數,可以視個人偏好採用 for
迴圈或 while
迴圈;在不知道迭代次數的情形下,我們只能採用 while
迴圈。
這個說法還是略嫌抽象,舉一個例子說明會比較好理解。假如我們現在投擲一枚公正的銅板,想知道總共需要投擲幾次才會出現三個正面,這就是一個不知道迭代次數的問題。運氣好一點也許投擲三次,三次都是正面;運氣差一點的也許要投擲十幾次才湊得齊三次正面。讓我們寫一段簡單的程式來模擬這個例子:
from random import choice
coin_flips = [] # 建立一個空的清單放置每一次投擲的結果
coin = ["Head", "Tail"]
while coin_flips.count("Head") < 3:
coin_flips.append(choice(coin))
print coin_flips # 印出每次投擲的紀錄
print len(coin_flips) # 總共投擲了幾次
您可以試著自行執行幾次,看看每一輪投擲次數的差異。