Python divmod() 语法
divmod() 是 Python 的一个内置函数,它用于将两个数字相除,然后以元组的方式返回这两个数的 “商” 和 “余数”。
其中,divmod 是 “division” 和 “modulus” 的缩写。
语法:
divmod(a, b)说明:
divmod() 函数接收 2 个参数,这两个参数必须是数字(整数或浮点数)。其中 a 作为分子,b 作为分母。
当参数都是整数时,返回 (int, int) 元组。当至少有一个参数为浮点数时,返回 (float, float) 元组。
divmod(a, b) 的结果等价于 (a // b, a % b)。
注意:
- divmod() 函数不能用于处理复数,否则会抛出 TypeError 异常。
- 当除数为 0 时,divmod() 会抛出 ZeroDivisionError 异常。
- 若 divmod() 参数为浮点数,余数可能存在浮点精度误差。
Python divmod() 摘要
| 使用频率 | 中 |
|---|---|
| 官方文档 | 查看 |
| 相关函数 | abs()、round()、pow() |
Python divmod() 示例
接下来,我们通过几个简单的例子来讲解一下 Python divmod() 函数是如何使用的。
示例 1:divmod() 参数是 “整数”
print(divmod(9,4)) # (2, 1)
print(divmod(4,9)) # (0, 4)
print(divmod(6,6)) # (1, 0)
print(divmod(-9,4)) # (-3, 3)
print(divmod(9,-4)) # (-3, -3)运行结果如下。
(2, 1)
(0, 4)
(1, 0)
(-3, 3)
(-3, -3)分析:
对于 divmod(9, 4) 来说,9 除以 4 的商为 2,余数为 1,因此返回的是 (2, 1)。同理地,小伙伴们可以自行推断一下 divmod(4, 9) 和 divmod(6, 6)。
对于 divmod(-9, 4) 来说,商为 -3(向下取整),余数 3(符号与除数一致)。
对于 divmod(9, -4) 来说,余数 -3(符号与除数一致),满足 9 = (-4)*(-3) + (-3)。
示例 2:divmod() 参数是浮点数
print(divmod(9.0, 4))
print(divmod(4, 9.0))
print(divmod(7.5, 2.5))
print(divmod(7.5, 2.1))运行结果如下。
(2.0, 1.0)
(0.0, 4.0)
(3.0, 0.0)
(3.0, 1.1999999999999997)分析:
对于 divmod() 函数来说,只要有一个参数是浮点数,那么它的商和余数都是浮点数。
示例 3:divmod() 参数是非数字
result = divmod('lvye', 'Python')
print(result)运行结果如下。
(报错)TypeError: unsupported operand type(s) for divmod(): 'str' and 'str'分析:
如果 divmod() 函数的参数包含了非数字,那么 Python 就会报错,抛出 TypeError 异常。
示例 4:divmod() 除数为 0
result = divmod(666, 0)
print(result)运行结果如下。
(报错)ZeroDivisionError: integer division or modulo by zero分析:
如果除数为 0,那么 divmod() 函数会抛出 ZeroDivisionError 异常。因此在使用 divmod() 函数时,要确保除数不为 0。
示例 5:divmod() 与运算符对比
a, b = 9, 4
q, r = divmod(a, b)
print(q == a // b and r == a % b)运行结果如下。
True分析:
divmod(a, b) 等价于 (a // b, a % b),但计算效率更高。这是因为相比分别计算 // 和 %,divmod() 只需一次除法运算,在处理大数时性能更高。
Python divmod() 实际应用
最后,我们通过一个简单例子来看看 divmod() 函数是如何实现时间转换的。
示例 6:divmod() 实现时间转换
total_seconds = 3670
minutes, seconds = divmod(total_seconds, 60)
hours, minutes = divmod(minutes, 60)
print(f'{hours}h {minutes}m {seconds}s')运行结果如下。
1h 1m 10s分析:
这段代码的功能是将总秒数转换为小时、分钟和秒。其中,divmod() 函数分别用于计算分钟和秒、小时和分钟的对应值,最后以 “1h 1m 10s” 的格式输出结果。
