for
Prerequisites:
for介紹
for 流程如下:
- for移到range的第一個值。
- 檢查是不是結束值
- 不是結束值,把range的值取出來,並把值指派給「變數」
- 執行程式碼。
- 移到range下一個值,回到步驟2。

語法
for 變數 in range(結束值):
程式碼
for i in range(1, 10, 1):
print(i)
flowchart TD
A[for移到range的第一個值] --> B{判斷是不是結束值}
B -->|False| C[把range值取出,指派給變數]
C --> D[執行程式碼]
D --> E[移到range下一個值]
E --> B
B ---->|True| F[離開迴圈]
for 與 range
產生1, 3, 5, 7, 9的數字,不包含10。
1
2
for i in range(1, 10, 2):
print(i)
1
3
5
7
9
產生5句Hello。
1
2
for i in range(5):
print("Hello")
Hello
Hello
Hello
Hello
Hello
離開迴圈,i變數仍能使用
Python的迴圈變數跟其它程式語言不同,離開for迴圈後,迴圈變數i仍能使用。
1
2
3
for i in range(5):
print("Hello", i)
print("i = ", i)
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
i = 4
end="" 不要換行
print後面加上end="",就不會換行。
1
2
for i in range(1, 10, 2):
print(i, end="")
13579
list
list語法
[1, 3, 5, 7]
使用[],建立list。
1
2
data = [1, 3, 5, 7]
print(data, type(data))
[1, 3, 5, 7] <class 'list'>
list 與 for
以下二種程式碼執行結果都一樣。
1
2
3
data = [1, 3, 5, 7]
for i in data:
print(i)
1
3
5
7
1
2
for i in [1, 3, 5, 7]:
print(i)
1
3
5
7
雙層for迴圈
當i為1,會配對j為1、2、3。
當i為2,會配對j為1、2、3。
j都是固定為1、2、3。

1
2
3
for i in [1,2]:
for j in [1,2,3]:
print(f"i = {i} and j = {j}")
i = 1 and j = 1
i = 1 and j = 2
i = 1 and j = 3
i = 2 and j = 1
i = 2 and j = 2
i = 2 and j = 3
for else break
如果for正確執行完,沒有被break,會到else的區塊中。
1
2
3
4
for i in range(1, 10, 2):
print(i)
else:
print("else finish")
1
3
5
7
9
else finish
如果遇到break,就不會進到else的區塊。
1
2
3
4
5
6
for i in range(1, 10, 2):
print(i)
if i == 5:
break
else:
print("else finish")
1
3
5
如果是雙層for迴圈,else會對映自己的for迴圈。
以下程式碼,break是發生在第二層for迴圈中,第一層else不會接收到第二層的break,所以第一層的else程式碼區塊仍會執行。
1
2
3
4
5
6
7
for i in range(1,3):
for j in range(1,4):
if j==2:
break
print(f"i = {i}, j = {j}")
else:
print("else finish")
i = 1, j = 1
i = 2, j = 1
else finish
continue
continue並非離開迴圈。
continue 流程如下:
- for移到range的第一個值。
- 檢查是不是結束值
- 不是結束值,把range的值取出來,並把值指派給「變數」
- 是否進入continue條件
- 若為進入continue條件,回到步驟7。
- 若不進入continue條件,執行程式碼
- 移到range下一個值,回到步驟2。
flowchart TD
A[for移到range的第一個值] --> B{判斷是不是結束值}
B -->|False| C[把range值取出,指派給變數]
C --> D{是否符合continue條件}
D -->|True| E[移到range下一個值]
D -->|False| F[程式碼]
E --> B
F --> E
B ---->|True| G[離開迴圈]
符合continue的條件就不執行contnue之後的程式碼。
以下程式碼,遇到i==3,就不輸出,直接移到range下一個值,判斷是不是結束值,若不為結束值就進入for迴圈。
1
2
3
4
5
6
for i in range(1,5):
if i == 3:
continue
print(i)
else:
print("for finish")
1
2
4
for finish