在 Python 中,迴圈(loop)是一種用來重複執行程式碼區塊的結構。
Python 支援兩種主要的迴圈結構:for 迴圈和 while 迴圈。
for item in sequence
是一種迭代結構,可以遍歷多種資料型態,包括列表(list)、字典(dictionary)、集合(set)和字串(string)等,在序列中的每一個項目上進行操作。
fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
print(fruit)
#apple
banana
cherry
當使用字典進行迴圈時,可以遍歷「鍵」或「鍵值對」。
student_scores = {"Alice": 85, "Bob": 90, "Charlie": 78}
for student in student_scores:
print(student)
#Alice
Bob
Charlie
for student, score in student_scores.items():
print(f"{student} scored {score}")
#
Alice scored 85
Bob scored 90
Charlie scored 78
集合(set)是一種無序、不重複的資料型態,可以用來存放獨特的值。
unique_numbers = {1, 2, 3, 4, 5}
for number in unique_numbers:
print(number)
#1
2
3
4
5
word = "hello"
for char in word:
print(char)
#h
e
l
l
o
coordinates = (10, 20, 30)
for coordinate in coordinates:
print(coordinate)
#10
20
30
range()
是一個常用的函數,幫助產生數字序列。
for i in range(5):
print(i)
#0 1 2 3 4
while 迴圈會在條件為 True 時反覆執行代碼,直到條件變為 False。
語法:
count = 0
while count < 5:
print(count)
count += 1
#0 1 2 3 4
在 Python 中,巢狀迴圈(nested loop)是指「一個迴圈內包含另一個迴圈」的結構。這樣的結構允許我們在一個迴圈內進行多重次的重複執行。巢狀迴圈通常用來操作多維資料,例如表格、矩陣或列表中的列表。
巢狀迴圈的格式可以是 for 中再包含 for、while 中包含 while 或兩者交叉使用。這裡以 for 迴圈為例:
for i in range(3): # 外層迴圈
for j in range(2): # 內層迴圈
print(f"i={i}, j={j}")
輸出:
i=0, j=0
i=0, j=1
i=1, j=0
i=1, j=1
i=2, j=0
i=2, j=1
作用: 立即結束迴圈,停止跳出目前所在的迴圈結構,不會執行剩餘的迴圈內容。
使用情境: 當找到所需的結果後,可以用 break 來避免不必要的重複執行,提高程式的效率。
範例:
for num in range(1, 6):
if num == 3:
break # 當 num 等於 3 時,迴圈會停止
print(num)
#輸出:1 2 當 num 等於 3 時,break 讓迴圈結束,不會執行後面的數字。
作用: 跳過目前迴圈的剩餘內容,直接開始下一輪迴圈。
使用情境: 當滿足某個條件時, 跳過不執行該次的迴圈剩餘內容,繼續執行下一次迴圈。
範例:
for num in range(1, 6):
if num == 3:
continue # 當 num 等於 3 時,跳過該輪迴圈
print(num)
#輸出:1245 當 num 等於 3 時,continue 讓該輪迴圈直接跳到下一輪,所以 3 沒有被印出來。
兩者在 while 迴圈中的運作方式與在 for 迴圈中一樣:
count = 0
while count < 5:
count += 1
if count == 3:
continue # 跳過 count 等於 3 的這一輪
elif count == 4:
break # 當 count 等於 4 時,結束迴圈
print(count)
#輸出:1 2這裡 continue 略過了 count 等於 3 時的輸出,而 break 則在 count 等於 4 時直接結束迴圈。
為什麼要在迴圈中使用 pass?
for i in range(10):
if i % 2 == 0:
pass # 跳過偶數
else:
print(i)
在上面的例子中:
pass: 跳過當前迭代,繼續執行下一次迭代。
break: 退出整個迴圈。
continue: 跳過當前迭代的剩餘部分,直接進入下一次迭代。
暫時性跳過: 當你正在開發一個功能,但還沒有完成,可以用 pass 來暫時跳過這部分,讓程式可以繼續執行。
簡化條件判斷: 在某些情況下,使用 pass 可以讓你的條件判斷語句更簡潔。
符合 PEP 8 規範: 在一些情況下,使用 pass 可以讓你的程式碼更符合 PEP 8 規範,提高程式碼的可讀性。
在 Python 中,使用 _
作為變數名是一個常見的慣例,特別是在以下幾種情況下:
_
來代替。# 計算一個列表中的元素個數
numbers = [1, 2, 3, 4, 5]
count = 0
for _ in numbers:
count += 1
print(count)
在這個例子中,我們只關心計算列表中元素的個數,並不關心每個元素的值,所以用
_
來表示迭代變數。
# 獲取一個文件的統計資訊
with open('file.txt', 'r') as f:
for line_num, line in enumerate(f):
_, word_count = line.split(), 0
for word in line.split():
word_count += 1
print(f"Line {line_num+1}: {word_count} words")
在這個例子中,我們用 _ 來接收 line.split() 返回的列表中的第一個元素(即行號),因為我們只需要字數。
class MyClass:
def __init__(self):
self._private_var = 42
_
在 Python 中是一個有特殊意義的變數名。_
雖然在很多情況下表示一個臨時變數,但它仍然是一個合法的變數名。
在某些特定的上下文中,_ 可能有其他的含義。
雖然使用 _ 是個好習慣,但過度使用也可能讓程式碼變得晦澀難懂。
在選擇變數名時,要根據具體的上下文和程式邏輯來決定是否使用 _
。
如果一個變數確實不需要使用,那麼用_
來表示是一個不錯的選擇。
希望這個更詳細的解釋能幫助你更好地理解 _
在 Python 中的用法。