Python 的內置函數 divmod() 是一個非常有用的數學運算函數,它可以同時返回一個除法運算的商和餘數。該函數接收兩個數字參數,返回一個包含商和餘數的元組。
函數語法
divmod(a, b)
參數説明
a:被除數(dividend)b:除數(divisor)
返回值
返回一個元組 (quotient, remainder),其中:
quotient是商(即a // b的結果)remainder是餘數(即a % b的結果)
使用示例
-
整數運算
result = divmod(10, 3) print(result) # 輸出:(3, 1)這裏
10除以3的商是3,餘數是1。 -
浮點數運算
result = divmod(10.5, 3) print(result) # 輸出:(3.0, 1.5)浮點數運算時,商和餘數也會是浮點數。
-
負數運算
result = divmod(-10, 3) print(result) # 輸出:(-4, 2)負數的除法運算遵循 Python 的取整規則。
應用場景
-
時間轉換
將秒數轉換為小時、分鐘和秒:total_seconds = 3661 hours, remainder = divmod(total_seconds, 3600) minutes, seconds = divmod(remainder, 60) print(f"{hours}小時 {minutes}分鐘 {seconds}秒") # 輸出:1小時 1分鐘 1秒 -
分頁計算
計算總頁數:total_items = 23 items_per_page = 5 pages, remaining = divmod(total_items, items_per_page) if remaining > 0: pages += 1 print(f"總頁數:{pages}") # 輸出:總頁數:5
注意事項
- 除數
b不能為0,否則會引發ZeroDivisionError異常。 - 對於複數運算,
divmod()不可用。
與單獨使用 // 和 % 的對比
雖然 divmod() 的功能可以通過分別使用 // 和 % 來實現,但 divmod() 的優勢在於:
- 只需一次函數調用,性能更高
- 代碼更簡潔易讀
- 保證商和餘數是基於同一個除法運算的結果
總之,divmod() 是一個高效且實用的內置函數,特別適合需要同時獲取商和餘數的場景。