1. 介紹
Python 的「餘數」或「餘數運算」指的是執行除法後剩餘的數值。在程式設計中,餘數運算廣泛應用於判斷奇偶數、處理資料索引、時間格式轉換等多種用途。本文將從基礎到進階,詳細解說 Python 的餘數運算。
什麼是餘數?
「餘數」是指除法運算後未被包含在商中的部分。例如,將 10 除以 3,商為 3,餘數為 1。在 Python 中,我們可以使用「%」運算子來計算餘數。
2. 餘數運算的基礎
% 運算子的使用方法
在 Python 中,可以使用「%」運算子來執行餘數計算。例如,以下程式碼計算 10 除以 3 的餘數:
print(10 % 3) # 結果為 1
這是一種忽略商數並僅獲取餘數的簡便方法。
判斷奇數與偶數
餘數運算最常見的應用之一是判斷奇數與偶數。當一個數除以 2 的餘數為 0,則為偶數;若餘數為 1,則為奇數。
num = 6
if num % 2 == 0:
print(f"{num} 是偶數")
else:
print(f"{num} 是奇數")
這段簡單的程式碼可以快速判斷一個數是奇數還是偶數。

3. 同時獲取商數與餘數的方法
使用 divmod()
函式
在 Python 中,可以使用 divmod()
函式來同時獲取商數與餘數。這個函式可以一次返回兩個計算結果,提高運算效率。
result = divmod(10, 3)
print(result) # 結果為 (3, 1)
如上所示,divmod()
會以元組(tuple)的形式回傳商數與餘數,使程式碼更加簡潔。
4. 餘數運算的應用範例
循環索引處理
餘數運算在管理列表(list)或陣列(array)的索引時非常實用。例如,當索引超出範圍時,可以使用餘數運算來讓索引循環回到起始位置。
def get_element_with_cyclic_index(lst, index):
return lst[index % len(lst)]
my_list = [10, 20, 30, 40]
print(get_element_with_cyclic_index(my_list, 5)) # 結果為 10
這樣,即使索引超出了列表的長度,也能安全地獲取對應的元素。
時間格式轉換
餘數運算在時間計算上也相當實用。例如,將秒數轉換為分鐘與秒時,可透過餘數運算來計算剩餘秒數。
time_in_seconds = 125
minutes = time_in_seconds // 60
seconds = time_in_seconds % 60
print(f"{minutes} 分 {seconds} 秒") # 結果為 2 分 5 秒
這樣可以輕鬆將時間單位轉換為易讀的格式。
5. 負數與浮點數的餘數運算
負數的餘數運算
當使用負數進行餘數運算時,結果可能與預期不同。以下程式碼顯示 Python 處理負數餘數的方式:
result = -10 % 3
print(result) # 結果為 2
從數學的角度來看,-10 除以 3 的餘數應該是 -1,然而在 Python 中,餘數始終為非負數。這與某些其他程式語言的行為不同,因此需要特別注意。
浮點數的餘數運算
當餘數運算與浮點數結合使用時,可能會出現計算誤差,因為浮點數是以近似值表示的。
result = 0.3 % 0.1
print(result) # 結果為 0.09999999999999995
由於浮點數的精度限制,這類誤差是常見的。為了避免這種問題,可以考慮使用整數運算,或在比較時設定允許的誤差範圍。

6. 總結與實際應用
Python 的餘數運算不僅可以用來計算基本的除法餘數,還能應用於列表的循環索引、時間計算、資料分組等多種場景。特別是使用「%」運算子與 divmod()
函式,可以更有效地處理數據。
此外,在處理負數與浮點數時,需要注意 Python 的特定行為,以避免潛在的錯誤。透過靈活運用餘數運算,我們可以開發出更高效、更靈活的程式。