標題圖片

[python筆記] 4.五個要素之五 – 控制(迴圈)

前言:

這是 《學習一個新的程式語言的過程(上)》裡面提到的五個要素的最後一環啦!所以我們快速地複習一下。

python的…

  • 輸出單元:print()
  • 輸入單元:input()
  • 記憶單元:不需要關鍵字的賦值,EX:a=100
  • 運算單元:指派(=)、算術(+-*/)、邏輯(and、or、not)、比較(>、<、==、!=)
  • 操作單元:if…elif…else、for、while

那我們馬上來看看for以及while如何使用,迴圈又是什麼?

閱讀時間:5分鐘

認識迴圈

迴圈主要要解決的程式問題就是「重複」,想像今天有個國軍機器人,你希望它一直搬磚,這就是迴圈的功能。不過你也不會希望搬磚機器人不斷搬磚,即使搬完了也像無頭蒼蠅一樣在繼續行動,那就需要給他一些停止的條件,於是迴圈就這樣構成了,我們需要:

  • 迴圈持續/停止的條件
  • 重複的內容

python的迴圈有for… in… 以及 while… ,兩種用法。不過在進入迴圈的內容前,還需要先簡單的認識 多資料型別。

什麼是多資料型別?
程式語言裡面並沒有這麼名詞,只是為了簡單的能讓初學者了解,在這邊使用的說法。
資料是什麼?例如:1、2、我、新北市政府,任何東西都可以是資料
資料型別是什麼?例如:1、2、3、…的資料型別是數字,而「我」的資料型別是文字,「新北市政府」的資料型別是字串,資料型別可以簡單的理解為資料的分類

多資料型別指的是由許多資料共同組成為一個資料。例如:之後會提到的「串列」:[0, 1, 2, 3],它表示由數字0, 1, 2, 3共同組成的一個串列資料。
套用到搬磚機器人裡,可以當作磚塊的編號,總共有4塊磚塊,而機器人會依序搬磚,從第0塊開始一塊塊搬到第3塊。

for… in…

假設擁有一個數字串列:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],對應搬磚機器人要搬的編號0-9磚塊。

list0 =[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for e in list0:
    print(e)

for迴圈縮排裡的print(),是屬於for的程式區塊,因此需要一個縮排。這個區塊表示在迴圈過程需要不斷重複執行。
因此我們會依序得到0-9的數字。

for的搭配詞 – range

有時候會有一個狀況,我們需要重複執行 n 次,因為 n 可以是任一數字,無法事先指定。因此 python 提供range函數,能夠快速地製造一個數量為 n 的串列來簡化重複的語法。

for e in range(10):
    print(e)

上面兩個程式範例的結果是一樣的,但是可以看到使用range的程式,更加簡潔且直觀,代表著想要 for 迴圈重複10次。

while

假設你想要買 5 顆蘋果,那麼條件就變成需要判斷袋子裡的蘋果是否小於 5 顆,這時候如果是用 for 迴圈會覺得不直覺,因為並不是要拿五次,而是要判斷袋子裡是否已經有 5 顆蘋果了(買蘋果如果不考慮新鮮度,一顆一顆拿很慢吧)。那就使用 while 來完成這個功能吧。

a,b =0, 5
while(a<b):
	print(a)
	a=a+2 # 每次放2顆蘋果
print("結束執行")

while 想要執行 while 的區塊內容,就需要先判斷 while 的條件是否成立,上面的例子 while 就檢查了 0<5、2<5、4<5以及6<5,最後一次檢查結果為錯誤,就不再重複執行區塊內的程式了。

迴圈的控制指令

在做重複動作的過程,往往會有不少的例外發生,為了有效的應對,還需要兩個控制指令。
想想在搬磚的過程裡,如果路途中遭遇了傷兵,需要放棄搬磚回去通報再繼續搬磚,又或是路途中搬磚機器人受傷了必須停止搬磚,這些都是例外的狀況。

break指令

break指令用在路途中搬磚機器人受傷了必須停止搬磚的例外情況。

耐久度=5
耐久值=0
磚塊數量=10

for i in range(磚塊數量):
    耐久值=耐久值+1
    print(i)
    if (耐久值>耐久度):
        print("機器人損毀")
        break
print("搬磚結束")

上面的例子裡,當耐久值超過耐久度,機器人損毀就必須停止搬磚。
(python 可以使用中文當作變數名稱,但不建議這樣使用)

continue 指令

continue 指令用在路途中遭遇了傷兵,需要放棄搬磚回去通報再繼續搬磚的例外情況。

磚塊數量=10
傷兵出現=5 # 在搬編號5的磚塊路上遇到傷兵

for i in range(磚塊數量):
    if (i==傷兵出現):
        print("發現傷兵")
        continue
    print(i)
print("搬磚結束")

你會得到這樣的結果:

要注意,在搬編號5的磚塊路上發現傷兵,會直接放棄編號 5 的磚塊,轉而處理傷兵,並不是處理完傷兵還會再重新搬編號 5 的磚塊。

結語

很快地就完成了五個要素的簡介了,關於這五個要素裡提到的內容,其實有不少還可以繼續補充,但我認為剛開始學習與其給了一堆,不如專注在一種簡單的做法上,之後熟悉了再去認識更多,對於學習會比較簡單,也會比較有動力。這個系列結束之後,會再有python小知識,來給大家做補充。
那接著就開始來了解python的資料型態吧。對應 [筆記]學習一個新程式語言的過程(下) – 是個好工具Blog (begoodtool.com)的內容,還沒看過的可以先去看看喔。

This article was written by 好想射射>///<. Any similarities to other works are purely coincidental.

我們是 Be Good Tool
團隊由幾位工程師、設計師與PM組成
專注開發各種免費網站工具和推廣優質的APP
歡迎到我們的線上工具列表看看喔!