iT邦幫忙

2024 iThome 鐵人賽

DAY 12
0
Python

初學者的 30 天 Python 復健課程系列 第 12

復健第十二天:轉呀轉呀的迴圈 Loops

  • 分享至 

  • xImage
  •  

英文版的三十天的 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 來處理 whileFalse 時的狀況。(就像沒晶石,那我就要課金!)

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 迴圈裡面也可以使用 breakcontinue 進行「中斷」與「跳過」的動作。

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 寫出來,完了,要產生職業病了。

https://ithelp.ithome.com.tw/upload/images/20240926/20167668t0n6rAOnIV.png


上一篇
復健第十一天:如果怎樣,要不然怎樣的條件邏輯 Conditionals
下一篇
復健第十三天:萬事皆可放的函式 Functions
系列文
初學者的 30 天 Python 復健課程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言