完全掌握 Python 的 for 迴圈與 and 運算子:從基礎到應用的全方位解析

目次

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 > 0False,所以 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']}さんは條件を滿足しています。")

輸出結果:

太郎さんは條件を滿足しています。
花子さんは條件を滿足しています。
三郎さんは條件を滿足しています。

使用列表生成式撰寫簡潔程式

forand 結合於列表生成式中,可以讓程式更加簡潔。

基本範例

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: 使用 andor 同時出現在條件式中時要注意什麼?

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,從基礎語法到進階應用。我們一起回顧一下重點:

重點回顧

  1. for 迴圈的基本語法與用法
  • 學會如何依序處理列表、字串、元組等可重複資料。
  • 透過 range()enumerate()zip() 等函數讓重複處理更靈活。
  1. and 運算子的基本語法
  • 可同時評估多個條件,全部為真時才成立。
  • 理解短路評估,有助於避免錯誤與提升效率。
  1. forand 的組合應用
  • 條件篩選、資料處理等場景非常實用。
  • 學會使用列表生成式簡化邏輯。
  1. 注意事項與最佳實踐
  • 將複雜條件拆解、使用函數封裝邏輯可提升可讀性。
  • 加入錯誤處理讓程式更穩健。
  1. FAQ 常見問題
  • 針對實務中常見的疑問提供具體範例與說明。

用 Python 實現高效程式開發

for 迴圈與邏輯運算子 and 是 Python 編程中的基礎與核心工具。希望透過這篇教學,你能更熟練掌握這些語法,並靈活應用於實際專案。

下一步該做什麼?

  1. 實作本篇內容
  • 親手練習文中範例,並觀察執行結果,加深理解。
  1. 持續進修
  • 接下來可以學習 if 條件式、or 運算子、以及進階的列表生成式。
  1. 分享這篇文章
  • 若你覺得這篇文章實用,也歡迎分享給同樣在學習 Python 的朋友們。