上手 Python – 基礎篇 (5/10):迴圈 (loop)

前言

本篇包含:

  • 迴圈 (loop) 介紹
  • 兩種迴圈:
    • for loop
    • while loop
  • 在迴圈中做點事情
  • 一些簡單的練習

承上篇:外行開始的 Python – 基礎篇 (4/10):型態轉換、可變動與不可變動型態、常用內建函數

這篇先介紹兩種 loop,更多應用要配合條件控制 (if statement) 才能有更多花招。


A) 迴圈 (loop) 介紹

目的

  • 重複執行多次任務,而不用重複寫一樣的程式碼
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
    # print 10 次 
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    print("ktlast.com")
    
    
    # 同樣是 print 10 次
    for _ in range(10):
        print("ktlast.com")

loop 的開始與結束會遵循給定的條件,一種是遍歷 (walk) 過所有的範圍,例如遍歷所有 list 中的 elements;另一種則是判斷是否符合條件,如果符合就繼續迴圈。

在 Python 中,loop 分別是這兩種:for 以及 while


B) for loop

說明

  • 遍歷過 list 中所有的元素。
  • 語法:for <var_name> in <iterable objects> ,其中,<var_name> 是每一次迴圈「內」取出元素的變數名稱;可以參考以下幾個例子
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    for element in [0,1,2,3,4,5,6,7,8,9]:
        print(element)
    
    
    # 0
    # 1
    # 2
    # 3
    # 4
    # 5
    # 6
    # 7
    # 8
    # 9
  • 這個迴圈中的元素變數叫做 element;你可以自訂如 i, x, my_var 等等,以「能清楚表達」所代表的意義為主。

甚至製作 list 不用這麼麻煩:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    for element in range(10):
        print(element)
    
    
    # 0
    # 1
    # 2
    # 3
    # 4
    # 5
    # 6
    # 7
    # 8
    # 9

如果你想要的話,可以自己更改每一輪取值元素的變數名稱 (以下改成 num):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
    for num in range(10):
        print(num)
    
    
    # 0
    # 1
    # 2
    # 3
    # 4
    # 5
    # 6
    # 7
    # 8
    # 9
  • 有的時候,寫清楚變數名字可以讓編輯的時候更理解意義,例如:
1
2
3
4
5
6
    for guest_name in guest_list:
      print("Welcome {} !".format(guest_name))
    
    
    # f-string 的寫法比較精簡:
    # print(f"Welcome {guest_name} !")

NOTE:

  • 事實上,for loop 不能說是「針對 list 做遍歷」,而是對一個迭代器 (iterator) 不斷找下一個 (next()) 元素,直到找不到為止;這部分會在後面的章節補充說明。

C) while loop

說明

  • 如果條件符合,則繼續進入 loop。

例如無窮迴圈:

1
2
3
4
5
    while True:
      print("ktlast.com")
    
    
    # print 無窮無盡
1
2
3
4
5
6
7
    my_list = ["ktlast", ".com"]
    
    while my_list:
      print(my_list.pop(0))  # 取第一個元素
    
    # "ktlast"
    # ".com"

D) 在迴圈中做點事情

在迴圈內,可以額外做更多事情,例如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
    for num in range(10):
        print(num * 2)
    
    # 0
    # 2
    # 4
    # 6
    # 8
    # 10
    # 12
    # 14
    # 16
    # 18

甚至可以重新指派「其他變數」

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
    my_num = 1
    for x in range(10):
        my_num = my_num * 2
        print(my_num)
    
    # 2
    # 4
    # 8
    # 16
    # 32
    # 64
    # 128
    # 256
    # 512
    # 1024

NOTE:

  • 這時候變數 x 在這個迴圈內就沒有用到,只有「計算次數」的功能。
  • 可以跟前一個例子仔細比較。

Q) 一些簡單的練習

q1:用 for loop 印出 1 ~ 50

印出 1 ~ 50,不是 0 ~ 49,因此除了 range(50) 之外,還需要做一些調整?

q2:用 for loop 印出以下星號 * 的結果 (十行星號)

*
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********
Licensed under CC BY-NC-SA 4.0
最後更新 2024-05-28 06:37

主題 StackJimmy 設計