1. はじめに
Python 是一種對初學者非常友善的程式語言。其中,for
迴圈用於重複處理,以及邏輯運算子 and
用來組合多個條件,是非常基本且強大的工具。只要正確理解並善用它們,就能撰寫出更有效率且易於閱讀的程式碼。
本篇文章將從基礎到進階,深入解析 Python 中的 for
迴圈與 and
運算子的使用方式。透過具體的程式碼範例,即使是初學者也能輕鬆理解。請務必閱讀到最後,一起提升你的 Python 程式設計技巧吧!
2. for
文の基本構文
Python 的 for
迴圈用來依序處理像是列表、字串等可重複資料(可疊代物件)的每個元素。這一節會說明 for
迴圈的基本語法與使用方式。
for
文の基本構文とは
for
迴圈的基本語法如下:
for 變數 in 可重複資料:
處理
- 變數: 在每次重複處理時,會被賦值為可重複資料中的下一個元素。
- 可重複資料: 可進行重複處理的物件(如列表、元組、字串等)。
- 處理: 每次重複時要執行的程式碼。
使用列表的基本範例
以下範例將依序輸出列表中的每個元素。
fruits = ["りんご", "バナナ", "オレンジ"]
for fruit in fruits:
print(fruit)
輸出結果:
りんご
バナナ
オレンジ
使用字串的範例
字串也是可重複資料,可以使用 for
迴圈來逐一處理每個字元。
word = "Python"
for letter in word:
print(letter)
輸出結果:
P
y
t
h
o
n
數值的重複處理
若要依序處理數值,可使用 range()
函數。
for i in range(5):
print(i)
輸出結果:
0
1
2
3
4
3. for
文の応用
掌握了基本的用法後,接下來讓我們看看如何進一步活用 for
迴圈,讓程式碼更有效率。這一節會介紹像是 enumerate()
和 zip()
等實用功能的範例。
搭配索引進行重複處理:enumerate()
使用 for
迴圈搭配 enumerate()
函數,可以同時取得列表中的元素與其索引。
基本範例
fruits = ["りんご", "バナナ", "オレンジ"]
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
輸出結果:
0: りんご
1: バナナ
2: オレンジ
應用範例
只處理索引為偶數的元素:
for index, fruit in enumerate(fruits):
if index % 2 == 0:
print(f"{index}: {fruit}")
同時處理多個列表:zip()
使用 zip()
函數可以將多個列表結合,進行同步的重複處理。這在處理相關聯的資料時非常實用。
基本範例
names = ["太郎", "花子", "次郎"]
ages = [20, 25, 30]
for name, age in zip(names, ages):
print(f"{name}さんは{age}歳です。")
輸出結果:
太郎さんは20歳です。
花子さんは25歳です。
次郎さんは30歳です。
應用範例
當 zip()
處理的列表長度不同時,會以最短的列表為準結束重複處理。
names = ["太郎", "花子"]
ages = [20, 25, 30]
for name, age in zip(names, ages):
print(f"{name}さんは{age}歳です。")
輸出結果:
太郎さんは20歳です。
花子さんは25歳です。
巢狀結構的 for
迴圈
可以在 for
迴圈中嵌套另一個 for
迴圈來處理巢狀資料結構。以下是處理列表中嵌套列表的範例。
基本範例
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
for row in matrix:
for value in row:
print(value, end=" ")
print()
輸出結果:
1 2 3
4 5 6
7 8 9
應用範例
使用列表生成式(List Comprehension)可以將巢狀結構的處理簡化為一行。
flat_list = [value for row in matrix for value in row]
print(flat_list)
輸出結果:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
4. 論理演算子and
の基本構文
Python 的邏輯運算子 and
可用來同時判斷多個條件。只有在所有條件都為真時,整體結果才會是 True。這一節會介紹 and
的基本語法與用法。
and
演算子の基本的な使い方
使用 and
運算子可以一次評估多個條件。
基本語法
if 條件1 and 條件2:
執行處理
- 只有在「條件1」與「條件2」都為
True
時,才會執行對應的程式碼。
基本範例
下列程式碼將兩個條件使用 and
組合:
a = 10
b = 5
if a > 0 and b > 0:
print("兩個數值都是正數。")
輸出結果:
兩個數值都是正數。
and
演算子の評価順序
and
運算子會從左到右依序評估條件。如果左邊的條件為 False
,則右邊的條件不會被評估(稱為「短路評估」)。
短路評估的範例
a = 0
b = 5
if a > 0 and b / a > 2:
print("條件符合。")
else:
print("已避免錯誤。")
輸出結果:
已避免錯誤。
在這個例子中,a > 0
為 False
,所以 b / a
並不會被執行,避免了除以零的錯誤。
條件分支中 and
的應用範例
透過組合多個條件,可以實現更具體的邏輯判斷。
多條件範例
age = 25
is_student = True
if age > 18 and is_student:
print("已成年,且為學生。")
else:
print("不符合條件。")
輸出結果:
已成年,且為學生。
驗證輸入值
and
也常用於驗證使用者輸入。
username = "user123"
password = "password123"
if len(username) > 5 and len(password) > 8:
print("輸入內容符合條件。")
else:
print("輸入不符合條件。")
輸出結果:
輸入內容符合條件。
5. for
文とand
の組み合わせ
將 for
迴圈與邏輯運算子 and
結合,可以在每次重複處理中同時檢查多個條件,讓資料處理更加高效。這一節會從基本到應用逐步說明。
for
文とand
の基本的な使い方
可以在每次 for
的迴圈中使用 and
來進行條件判斷。
基本範例:選出符合範圍的數字
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for num in numbers:
if num > 3 and num < 7:
print(num)
輸出結果:
4
5
6
應用範例:資料篩選
依據條件篩選資料
students = [
{"name": "太郎", "age": 20, "grade": 85},
{"name": "花子", "age": 19, "grade": 92},
{"name": "次郎", "age": 22, "grade": 78},
{"name": "三郎", "age": 21, "grade": 88}
]
for student in students:
if student["age"] > 18 and student["grade"] > 80:
print(f"{student['name']}さんは條件を滿足しています。")
輸出結果:
太郎さんは條件を滿足しています。
花子さんは條件を滿足しています。
三郎さんは條件を滿足しています。
使用列表生成式撰寫簡潔程式
將 for
與 and
結合於列表生成式中,可以讓程式更加簡潔。
基本範例
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
filtered_numbers = [num for num in numbers if num > 3 and num < 7]
print(filtered_numbers)
輸出結果:
[4, 5, 6]
進階範例:複雜條件
students = [
{"name": "太郎", "age": 20, "grade": 85},
{"name": "花子", "age": 19, "grade": 92},
{"name": "次郎", "age": 22, "grade": 78},
{"name": "三郎", "age": 21, "grade": 88}
]
filtered_students = [student["name"] for student in students if student["age"] > 20 and student["grade"] > 80]
print(filtered_students)
輸出結果:
['三郎']
實用範例:應用於資料分析
篩選 CSV 檔案資料
以下是使用 Python 的 csv
模組來讀取 CSV 資料,並依據條件過濾資料的範例。
import csv
# 範例資料
data = """name,age,score
太郎,20,85
花子,19,92
次郎,22,78
三郎,21,88"""
# 處理 CSV 資料
lines = data.split("n")
reader = csv.DictReader(lines)
for row in reader:
if int(row["age"]) > 20 and int(row["score"]) > 80:
print(f"{row['name']}さんは條件を滿足しています。")
輸出結果:
三郎さんは條件を滿足しています。
6. 注意點與最佳實踐
在使用 for
迴圈與 and
運算子時,考慮程式碼的可讀性與效率性是非常重要的。本節將說明常見的注意事項與最佳撰寫方式。
注意事項
1. 避免條件式過於複雜
如果條件太長,會讓程式碼難以閱讀。以下為可讀性差的例子:
# 可讀性差的寫法
if age > 18 and age < 30 and grade > 80 and is_student:
print("符合條件。")
改進方式
將複雜條件拆分為變數或函式,使邏輯更清晰。
# 改進後
is_eligible_age = age > 18 and age < 30
is_high_grade = grade > 80
if is_eligible_age and is_high_grade and is_student:
print("符合條件。")
2. 注意巢狀結構過深
如果 for
迴圈內部又有過多條件或其他 for
,會讓邏輯不易追蹤。
# 可讀性差的寫法
for student in students:
if student["age"] > 18:
if student["grade"] > 80:
print(f"{student['name']}さんは條件を滿足しています。")
改進方式
可以使用早期 return 或函式化來減少巢狀層級。
# 改進後
def is_eligible(student):
return student["age"] > 18 and student["grade"] > 80
for student in students:
if is_eligible(student):
print(f"{student['name']}さんは條件を滿足しています。")
3. 理解短路評估(Short-circuit Evaluation)
and
運算子會依序評估條件,一旦某個條件為 False
,就不會繼續往下執行,這有助於避免錯誤,但也可能造成誤會。
a = 0
b = 10
if a > 0 and b / a > 2:
print("符合條件。")
else:
print("已避免錯誤。")
輸出結果:
已避免錯誤。
若要使用此機制,應謹慎設計條件的順序。
7. FAQ:常見問題
本節整理了關於 for
迴圈與邏輯運算子 and
的常見問題與解答,幫助你釐清實作時常遇到的疑問,進一步加深理解。
Q1: 如果 for
迴圈中的列表是空的,會產生錯誤嗎?
A1: 不會產生錯誤。當列表為空時,for
迴圈會直接結束,不會執行任何處理。
範例:
empty_list = []
for item in empty_list:
print(item)
print("迴圈結束。")
輸出結果:
迴圈結束。
Q2: 使用 and
與 or
同時出現在條件式中時要注意什麼?
A2: 需要注意運算子的優先順序。and
的優先順序比 or
高,因此在複雜條件式中建議使用括號以明確定義邏輯。
範例:
a = 10
b = 5
c = -1
# 沒有括號的情況
if a > 0 and b > 0 or c > 0:
print("符合條件。")
else:
print("不符合條件。")
# 使用括號的情況
if a > 0 and (b > 0 or c > 0):
print("符合條件。")
else:
print("不符合條件。")
輸出結果(未加括號):
符合條件。
輸出結果(加上括號):
符合條件。
Q3: 可以在 for
迴圈中同時處理多個列表嗎?
A3: 可以,使用 zip()
函數可以將多個列表結合並同步迴圈處理。
範例:
names = ["太郎", "花子", "次郎"]
ages = [20, 25, 30]
for name, age in zip(names, ages):
print(f"{name}さんは{age}歳です。")
輸出結果:
太郎さんは20歳です。
花子さんは25歳です。
次郎さんは30歳です。
Q4: and
可以用於列表或字串的判斷嗎?
A4: 可以。在 Python 中,and
不只適用於布林值,還能用於其他物件(例如列表、字串)。這會依據「真值」來判斷。
範例:
x = []
y = [1, 2, 3]
print(x and y) # 結果: []
print(y and x) # 結果: []
- 說明:
and
會回傳第一個為False
的值;若前者為真,則回傳後者。
Q5: for
迴圈中的條件太複雜怎麼辦?
A5: 建議將條件式抽離成函數,以提高可讀性與維護性。
範例:
students = [
{"name": "太郎", "age": 20, "grade": 85},
{"name": "花子", "age": 19, "grade": 92},
{"name": "次郎", "age": 22, "grade": 78}
]
def is_eligible(student):
return student["age"] > 20 and student["grade"] > 80
for student in students:
if is_eligible(student):
print(f"{student['name']}さんは條件を滿足しています。")
輸出結果:
太郎さんは條件を滿足しています。
花子さんは條件を滿足しています。
Q6: 該使用列表生成式還是傳統的 for
迴圈?
A6: 若處理邏輯簡單,建議使用列表生成式,讓程式更簡潔;若邏輯複雜,則使用 for
迴圈更容易閱讀與除錯。
列表生成式範例(簡單處理):
numbers = [1, 2, 3, 4, 5]
squared = [num**2 for num in numbers if num > 2]
print(squared)
輸出結果:
[9, 16, 25]
for
迴圈範例(複雜邏輯):
numbers = [1, 2, 3, 4, 5]
result = []
for num in numbers:
if num > 2:
result.append(num**2)
print(result)
輸出結果:
[9, 16, 25]

8. 總結
本文詳細介紹了 Python 中的 for
迴圈與邏輯運算子 and
,從基礎語法到進階應用。我們一起回顧一下重點:
重點回顧
for
迴圈的基本語法與用法
- 學會如何依序處理列表、字串、元組等可重複資料。
- 透過
range()
、enumerate()
、zip()
等函數讓重複處理更靈活。
and
運算子的基本語法
- 可同時評估多個條件,全部為真時才成立。
- 理解短路評估,有助於避免錯誤與提升效率。
for
與and
的組合應用
- 條件篩選、資料處理等場景非常實用。
- 學會使用列表生成式簡化邏輯。
- 注意事項與最佳實踐
- 將複雜條件拆解、使用函數封裝邏輯可提升可讀性。
- 加入錯誤處理讓程式更穩健。
- FAQ 常見問題
- 針對實務中常見的疑問提供具體範例與說明。
用 Python 實現高效程式開發
for
迴圈與邏輯運算子 and
是 Python 編程中的基礎與核心工具。希望透過這篇教學,你能更熟練掌握這些語法,並靈活應用於實際專案。
下一步該做什麼?
- 實作本篇內容
- 親手練習文中範例,並觀察執行結果,加深理解。
- 持續進修
- 接下來可以學習
if
條件式、or
運算子、以及進階的列表生成式。
- 分享這篇文章
- 若你覺得這篇文章實用,也歡迎分享給同樣在學習 Python 的朋友們。