for迴圈

for 是另一種常用的迴圈,語法與前面學過的 ifwhile 較為不同,讓我們改寫一個前面提過的例子來看看它的語法:

for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    print(i)
print('finish!')

for 的用法是在後面緊接一個 變數名稱,然後接一個 in;再來會是一個 可迭代的物件,例如前一個章節所學的 list,待會就會提到的 range,還有之後的 dictionarytuple 等等;當然,別忘了還是要加一個 :! 其中所謂的可迭代物件,就是指我們可以依序將此物件裡的元素一個一個取出來,而for迴圈就是根據可迭代物件裡的元素,重複進行for迴圈中有縮排的程式碼;直到可迭代物件迭代完畢後,迴圈便結束。 因此上述這段程式碼做的事情就是:第一回合i=0,因此印出 0;第二回合i=1,因此印出 1;第三回合i=2,因此印出 2;...;直到印完 9 之後,迴圈結束,繼續往下執行迴圈外的程式碼,因此印出 finish!。 程式執行結果如下:

0
1
2
3
4
5
6
7
8
9
finish!

break, continue

breakcontinue 在for迴圈和while迴圈的用法相同,使用時機一樣是在需要「打斷迴圈」和「跳過某一回合」時,也經常會與 if 搭配使用。 以下舉一個經典的質數判斷和改寫的例子,讓大家熟悉他們的用法:

n = int(input())
if n < 2:
    print('invalid')
else:
    for i in range(2, n):
        if n % i == 0:
            print('composite number')
            break
    else:
        print('prime number')
  1. 前三行是確保使用者輸入一個大於1的正整數,如果n大於1就會進入 else 的區塊開始執行for迴圈。
  2. range 稍後就會做詳細的介紹,在這裡 range(2, n) 的意思就是2~n-1之間的整數序列,因此i會依序迭代序列裡的值,並執行下三行有縮排的區塊。
  3. for迴圈裡執行的程式碼則是在檢查2~n-1之間有沒有可以整除n的數字,如果有,便會印出 composite number,並跳出迴圈。
  4. 而這裡有一個特別的用法,我們可以發現 else 除了可以和 if 搭配使用外,其實也可以跟迴圈(whilefor)搭配:唯有當迴圈是正常地循環完畢時(也就是非透過 break 中斷迴圈),才會執行 else 的區塊。因此若當迴圈檢查完2~n-1沒有可以整除n的數字時,就能夠順利完成所有迭代,因此就會進入 else,印出 prime number
for i in range(1, 51):
    if i % 2 == 0:
        continue
    elif i % 3 == 0:
        continue
    print(i)

此段程式碼則是改寫前面在 while 提過的例子,range(1, 51) 代表1~50的整數序列,因此for迴圈會使i從1迭代到50,依序檢查i是否為2或3的倍數,若成立,則會利用 continue 跳過該回合,繼續進行下一次的判斷;若否,才能執行完迴圈中剩下的程式碼(最後一行),將i印出。

results matching ""

    No results matching ""