在英文版的三十天的 Python 挑戰中,作者是這麼形容迴圈——「生活中充滿了各種例行公事,而程式語言中,也有許多任務具有重複性,為了達成這些任務,我們可以使用迴圈 Loops。」
在 Python 中有兩種迴圈可以使用:
while
迴圈for
迴圈while
迴圈while
在英文裡具有「當⋯⋯」的意思,所以如果把 Python 中的 while
loop 翻譯成中文,可以理解為「當某個狀態滿足(為 True
)時,Python 會執行其中的程式碼」,換句話說,當狀態為 False
時,該程式碼也會被終止。
用抽卡手遊比喻的話,當我們有晶石時,我就會一直抽卡,直到我沒有晶石為止。(然後我就會課金,誤!)
直接來看 Python 範例。
count = 0
while count < 5:
print(count)
count = count + 1
# 印出 0 1 2 3 4
# 不會印出 5
# 因為當 count 為 5 時,while loop 的條件就不成立了
如同昨天if 條件,所有事情都會有例外,我們也可以使用 else
來處理 while
為 False
時的狀況。(就像沒晶石,那我就要課金!)
count = 0
while count < 5:
print(count)
count = count + 1
else:
print('count stop')
# 前面的 while loop 一樣會印出 0 1 2 3 4
# 當 count 為 5 時,while 會轉為 False
# 此時會觸發 else 表達式,並印出 'count stop' 的字串
如果每次抽卡都要抽到晶石用光,那傾家蕩產也是遲早的事,所以我們需要設下一些條件,像是「連續五次都沒有抽到指定的卡片」,讓我們可以提前結束 while
loop 的行為,而這個關鍵字是 break
(中斷)。
count = 0
while count < 5:
print(count)
count = count + 1
if count == 3:
break
# while 會印出 0 1 2
# 當 count 等於 3 時,會觸發 break
# 不會印出 3 跟 4
# while 完全終止
除了 break
,Python 中還有關鍵字 continue
讓我們可以「跳過一次」while
的執行,直接進到下一輪。
count = 0
while count < 5:
if count == 3:
count = count + 1
continue
print(count)
count = count + 1
# while 會印出 0 1 2
# count 等於 3 時,會執行 count = count + 1
# 遇到 continue 時,會重新執行一次 while loop
# 印出 4
for
迴圈若要把 for
翻成中文,比較接近的意思應該是「針對」,把 Python 的程式碼翻譯成中文的話,可以理解為「針對這些東西,進行指定的運算,直到這些指定的東西都跑過一輪。」
跟 while
不同的是,while
是在一開始設定條件,根據條件是否成立,來決定要不要執行接下來的程式碼,而 for
則是需要針對一個可迭代(iterable)物件,將物件裡的元素進行運算,直到每個元素都處理完成。
使用 for
loop 處理 list 裡的每個元素
numbers = [0, 1, 2, 3, 4, 5]
for number in numbers: # 這邊的 number 只個暫時用代名詞,用來臨時存放從串列中取出的個別元素,只會存在於這個 for 迴圈裡
print(number) # 會分別印出 0 1 2 3 4 5
使用 for
loop 處理 string 裡的每個元素
language = 'Python'
for letter in language:
print(letter) # 分別印出 "P", "y", "t", "h", "o", "n"
同樣地,for
迴圈裡面也可以使用 break
與 continue
進行「中斷」與「跳過」的動作。
for
迴圈裡的 break
numbers = (0,1,2,3,4,5)
for number in numbers:
print(number)
if number == 3:
break
# 會印出 0 1 2 3
# 遇到 break 後終止
for
迴圈裡的 continue
numbers = (0,1,2,3,4,5)
for number in numbers:
print(number)
if number == 3:
continue # 當 number 為 3 時,會觸發 continue 並跳過下一行
print('Next number should be ', number + 1)
程式語言其實蠻像真實世界的每個動作進行轉換,所有發生在我們日常生活中的事件,都可以透過程式語言表達,一旦學習了程式語言,不知不覺就會在路上想說,這個要怎麼用 for
loop 寫出來,完了,要產生職業病了。