Python 的内置函数 divmod
基本介绍
divmod() 是 Python 的一个内置函数,用于同时计算两个数的商和余数。它接受两个数字参数(可以是整数或浮点数),并返回一个包含商和余数的元组。
语法
divmod(a, b)
参数说明
a:被除数(dividend)b:除数(divisor)
返回值
返回一个元组 (quotient, remainder),其中:
quotient是商(即 a // b)remainder是余数(即 a % b)
使用示例
整数运算
>>> divmod(10, 3)
(3, 1) # 10 ÷ 3 = 3 余 1
浮点数运算
>>> divmod(10.5, 3)
(3.0, 1.5) # 10.5 ÷ 3 = 3.0 余 1.5
负数运算
>>> divmod(-10, 3)
(-4, 2) # -10 ÷ 3 = -4 余 2
实现原理
divmod() 函数的底层实现实际上就是同时调用了 // 和 % 运算符:
def divmod(a, b):
return (a // b, a % b)
应用场景
时间转换
将秒数转换为小时、分钟和秒:
def convert_seconds(seconds):
hours, remaining = divmod(seconds, 3600)
minutes, seconds = divmod(remaining, 60)
return hours, minutes, seconds
>>> convert_seconds(3661)
(1, 1, 1) # 1小时1分钟1秒
坐标转换
将像素坐标转换为网格坐标:
def pixel_to_grid(pixel, grid_size):
return divmod(pixel, grid_size)
>>> pixel_to_grid(150, 100)
(1, 50) # 在100x100的网格中,150像素位于第1行第50列
金融计算
计算货币兑换:
def exchange_money(total, rate):
return divmod(total, rate)
>>> exchange_money(100, 3.5)
(28.0, 2.0) # 100元按3.5汇率可兑换28单位,剩余2元
注意事项
- 当除数为0时会引发
ZeroDivisionError异常 - 对于复数,
divmod()函数不可用 - 对于浮点数运算,结果可能会有微小的精度误差
性能考虑
divmod() 通常比分别调用 // 和 % 更高效,因为它在底层只需要执行一次除法运算。
相关函数
//地板除运算符%取模运算符math.fmod()浮点数取模函数
随时随地看视频