在 Python 中,divmod() 是一個內建函式,用來同時計算兩個數字的「商和餘數」。
它的結果會以一個二元組(tuple)的形式返回,分別表示「商」和「餘數」。
「商」是數學中的術語,指的是在進行除法運算時,被除數(分子)被除數(分母)整除後的結果。商代表「完整分割」的次數或結果,例如,20 除以 5 的商是 4,因為 20 可以被 5 整除四次。
舉例
10÷2=5
10÷2=5,所以 10 除以 2 的商是 5,餘數是 0。
17÷3=5
17÷3=5(餘數 2),所以 17 除以 3 的商是 5,餘數是 2。
在 Python 中,商可以用兩種方式求得:
# 方法 1: 使用整數除法
quotient = 10 // 3
print(quotient) # 輸出: 3
# 方法 2: 使用 divmod 函式
quotient, remainder = divmod(10, 3)
print(quotient) # 輸出: 3
print(remainder) # 輸出: 1
# 假設 a = 10, b = 3
result = divmod(10, 3)
print(result) # 輸出: (3, 1)
# 分別取得商和餘數
quotient, remainder = divmod(10, 3)
print("商:", quotient) # 輸出: 商: 3
print("餘數:", remainder) # 輸出: 餘數: 1
整除及餘數運算的便捷性:在需要同時得出整數商和餘數的情況下,divmod() 可以避免重複計算。
應用於貨幣、時間等計算:當需要計算小單位的數量和剩餘時數(如小時、分鐘的轉換)時非常實用。
def seconds_to_hms(seconds):
h, m = divmod(seconds, 3600)
m, s = divmod(m, 60)
return h, m, s
total_seconds = 7265
hours, minutes, seconds = seconds_to_hms(total_seconds)
print(f"{hours}小時{minutes}分{seconds}秒")
def paginate_data(data, page, per_page):
start = (page - 1) * per_page
end = start + per_page
return data[start:end]
# 假設資料總數為 100,每頁顯示 10 條資料,查詢第 3 頁
total_data = [i for i in range(100)]
#設定分頁參數
page = 3
per_page = 10
result = paginate_data(total_data, page, per_page)
print(result)
參數:
data: 要分頁的資料列表。
page: 要查詢的頁碼。
per_page: 每頁顯示的資料數量。
如果我們不使用 divmod(),計算整數商和餘數會需要進行兩次操作:
a = 10
b = 3
quotient = a // b
remainder = a % b
print((quotient, remainder)) # 輸出: (3, 1)
而 divmod() 更為簡潔,也會執行得更快,因為它僅進行一次運算。