迴圈這個詞對初學者可能很陌生,但大家可以回想一下學生時期,被老師罰抄題目十遍,是不是很多人會抄完一遍就拿去影印十份呢?這個其實就跟迴圈很像喔。
那迴圈是由三個條件構成的:
今天要講的是while迴圈,它的語法如下:
初始條件
While 判斷條件
statement
更新條件
直接給一個例子可能更清楚。
i = 0 # 一開始什麼都還沒寫
while i < 10: # 總共要印十份罰抄
print("i")
i = i + 1 # 印完一份就+1
講到while就不得不介紹一下布林值 (Boolean),它只有兩種值分別是 True & False,不要看它長得怪怪的,其實和int, sting一樣都是一種資料型態,也就是說一樣可以被指配到變數中。那為什麼要在這裡特別提到呢?因為在迴圈中判斷的條件其實就是布林值,像是i<10就是判斷i是否<10,是就是True,否就是False。當你不確定迴圈到底要執行幾次的時候布林值就很好用了,為了讓迴圈一直跑就必須讓條件一直是True的狀態,像是你可以設定while 5>2這個條件永遠是True,但就很多餘乾脆就用while True了呀,小知識一定要學起來!
Python除了while以外還有另外一種for迴圈,語法如下:
For item in iterable:
statement
在in後面的iterable就是迴圈會讀取的目標物,它可以是字串(String)、串列(List)、元組(Tuple)、字典(Dictionary)或是range數列,一次讀取其中的一個元素,然後用item(可以自己取名)來存取這個元素,來進行區塊中的敘述。
這是一個很常用在for迴圈內的方法,它可以幫忙產生出數列,語法如下:
range(start, stop, step)
range(10) # 預設從0開始,產生到10的前面一個數字
# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
range(1, 10) # 從1開始,產生到10的前面一個數字
# 1, 2, 3, 4, 5, 6, 7, 8, 9
range(1, 10, 2) # 從1開始,產生到10的前面一個數字,每一次都+2
# 1, 3, 5, 7, 9
一樣可以用在罰寫例子上。
for i in range(10): # 總共要抄十次
print("XXX")
# 這裡就不需要再另外i = i + 1,for-loops會繼續執行下一次的迴圈
可以直接中斷迴圈,通常都跟if判斷式搭配使用,當達到某個目標便中斷此回圈。
像是本來老師說要抄10次罰寫,但一週交5遍就好,所以只需要跑五次。
for i in range(10): # 總共要抄10次
if i == 5: # 如果i=5,也就是第6次便直接跳出迴圈不再執行
break
print("i")
和break指令一樣都是常跟if判斷式搭配使用,不同的是,break會跳出整個迴圈,continue只是跳過當次不執行,還是會繼續讀取下一次的元素。
像是本來老師說要抄10次罰寫,但他討厭6這個數字,所以不收第6次的罰寫(真是奇怪的理由)。
for i in range(10):
if i == 5:
continue
print("i")
以上就是Python的兩種迴圈介紹,以及常搭配使用的range和兩種方法,你更喜歡使用哪種呢?