Python3 divmod() 函数
Python divmod() 函数接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。
在 python 3.x 版本该函数不支持复数。
函数语法
divmod() 函数接受两个参数,通常是两个数字,并返回一个包含两个值的元组。第一个值是第一个参数除以第二个参数的商(即整数部分),第二个值是余数。
divmod(a, b)
参数说明:
- a: 数字,非复数。
- b: 数字,非复数。
如果参数 a 与 参数 b 都是整数,函数返回的结果相当于 (a // b, a % b)。
如果其中一个参数为浮点数时,函数返回的结果相当于 (q, a % b),q 通常是 math.floor(a / b),但也有可能是 1 ,比小,不过 q * b + a % b 的值会非常接近 a。
如果 a % b 的求余结果不为 0 ,则余数的正负符号跟参数 b 是一样的,若 b 是正数,余数为正数,若 b 为负数,余数也为负数,并且 0 <= abs(a % b) < abs(b)。
实例
>>> divmod(7, 2)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(8, -2)
(-4, 0)
>>> divmod(3, 1.3)
(2.0, 0.3999999999999999)
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(8, -2)
(-4, 0)
>>> divmod(3, 1.3)
(2.0, 0.3999999999999999)
divmod() 函数的应用场景
divmod() 在处理时间转换、分页计算等场景中非常有用。
1、时间转换 例如,将总秒数转换为小时、分钟和秒:
实例
total_seconds = 3661
hours, remainder = divmod(total_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
print(f"{hours}小时 {minutes}分钟 {seconds}秒") # 输出:1小时 1分钟 1秒
hours, remainder = divmod(total_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
print(f"{hours}小时 {minutes}分钟 {seconds}秒") # 输出:1小时 1分钟 1秒
2、分页计算 在分页系统中,divmod() 可以用来计算总页数和最后一页的记录数:
实例
total_items = 101
items_per_page = 10
pages, remainder = divmod(total_items, items_per_page)
if remainder:
pages += 1
print(f"总页数:{pages}") # 输出:总页数:11
items_per_page = 10
pages, remainder = divmod(total_items, items_per_page)
if remainder:
pages += 1
print(f"总页数:{pages}") # 输出:总页数:11
divmod() 函数的注意事项
divmod() 函数的第二个参数不能为 0,否则会引发 ZeroDivisionError 异常。
divmod() 函数返回的商和余数的类型取决于输入参数的类型。如果输入参数是整数,则返回的商和余数也是整数;如果输入参数是浮点数,则返回的商和余数也是浮点数。
点我分享笔记