手记

Python 的内置函数 divmod

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元

注意事项

  1. 当除数为0时会引发 ZeroDivisionError 异常
  2. 对于复数,divmod() 函数不可用
  3. 对于浮点数运算,结果可能会有微小的精度误差

性能考虑

divmod() 通常比分别调用 //% 更高效,因为它在底层只需要执行一次除法运算。

相关函数

  • // 地板除运算符
  • % 取模运算符
  • math.fmod() 浮点数取模函数
0人推荐
随时随地看视频
慕课网APP