Функция divmod() в Python3
Функция divmod() в Python принимает два числовых (не комплексных) параметра и возвращает кортеж (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).
Пример
(3, 1)
>>> divmod(8, 2)
(4, 0)
>>> divmod(8, -2)
(-4, 0)
>>> divmod(3, 1.3)
(2.0, 0.3999999999999999)
Сценарии применения функции divmod()
divmod() очень полезна в таких сценариях, как преобразование времени и расчёт пагинации.
1. Преобразование времени. Например, преобразовать общее количество секунд в часы, минуты и секунды:
Пример
hours, remainder = divmod(total_seconds, 3600)
minutes, seconds = divmod(remainder, 60)
print(f{hours} часов {minutes} минут {seconds} секунд) # Вывод: 1 час 1 минута 1 секунда
2. Расчёт пагинации. В системе пагинации divmod() можно использовать для вычисления общего количества страниц и количества записей на последней странице:
Пример
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(), зависят от типов входных параметров. Если входные параметры — целые числа, возвращаемые частное и остаток также являются целыми числами; если входные параметры — числа с плавающей запятой, возвращаемые частное и остаток также являются числами с плавающей запятой.
Другие расширения
Встроенные функции Python3