divmod
Функция divmod() возвращает одновременно результат целочисленного деления и остаток от деления в виде кортежа.
Синтаксис
divmod(a, b)
Аргументы
- a:
- Что означает: Делимое.
- Возможные значения: Любое число (целое или вещественное).
- b:
- Что означает: Делитель.
- Возможные значения: Любое число (целое или вещественное), кроме нуля.
Возвращаемое значение
Возвращает кортеж из двух элементов:
- Целая часть результата деления (a // b).
- Остаток от деления (a % b).
Если аргументы — целые числа, возвращаются целые значения. Если хотя бы один из аргументов вещественный, оба значения в результате также будут вещественными.
Примеры использования
print(divmod(10, 3)) # Вывод: (3, 1)
print(divmod(10, 2)) # Вывод: (5, 0)
print(divmod(7.5, 2.5)) # Вывод: (3.0, 0.0)
# Пример для отрицательных чисел
print(divmod(-10, 3)) # Вывод: (-4, 2)
Эквивалентный код
def pyplanet_divmod(a, b):
if b == 0:
raise ZeroDivisionError("Деление на ноль невозможно")
return (a // b, a % b)
Частые ошибки
Часто задаваемые вопросы
Работает ли divmod() с вещественными числами? Да, функция поддерживает вещественные числа. Например:
print(divmod(7.5, 2.5)) # Вывод: (3.0, 0.0)
Однако, стоит помнить о приближенном представлении вещественных чисел в ПК, что может давать на первый взгляд странные результаты:
print(divmod(2.5, 0.1)) # Вывод: (24.0, 0.09999999999999987)
Как divmod(a, b) работает с отрицательными числами? Поведение аналогично оператору // и % для отрицательных чисел.
А правила таковы:
- (a // b) * b + (a % b) == a, и
- a % b имеет тот же знак, что и b
Например:
print(divmod(-10, 3)) # Вывод: (-4, 2)
Можно ли использовать divmod() с комплексными числами? Нет, будет вызвано исключение TypeError.
Какая разница между divmod() и отдельным использованием // и %? Функция divmod() более удобна, если нужны оба результата (целое деление и остаток) одновременно.