Рубрики
Без рубрики

Python divmod () – простое руководство с видео

Встроенная функция DIVMOD (A, B) Python имеет два целых или плавающихся номера A и B в качестве входных аргументов и возвращает кортеж (A // B,% B). Первая ценность кортежа является результатом целочисленного разделения A // B. Второй кортеж – это результат остатка, также называемого модульской операцией A% B. … Python divmod () – простой гид с видео Подробнее »

Автор оригинала: Chris.

Встроенный Python divmod (a, b) Функция занимает два целых или плавающихся номера А и B в качестве ввода аргументов и возвращает кортеж (A//B,% B) Отказ Первое значение кортежа – это результат Целочисленное разделение A//B Отказ Второй кортеж является результатом остатка, также называемых Операция по модулю % b Отказ В случае поплавковых входов divmod () по-прежнему возвращает дивизию без остатка, округление до следующего раунда.

использование

Узнайте пример! Вот несколько примеров того, как использовать divmod () Встроенная функция с Целые аргументы:

# divmod() with integers
>>> divmod(10, 2)
(5, 0)
>>> divmod(10, 3)
(3, 1)
>>> divmod(10, 4)
(2, 2)
>>> divmod(10, 5)
(2, 0)
>>> divmod(10, 10)
(1, 0)

Вы также можете использовать поплавка аргументы следующим образом:

# divmod() with floats
>>> divmod(10.0, 2.0)
(5.0, 0.0)
>>> divmod(10.0, 3.0)
(3.0, 1.0)
>>> divmod(10.0, 4.0)
(2.0, 2.0)
>>> divmod(10.0, 5.0)
(2.0, 0.0)
>>> divmod(10.0, 10.0)
(1.0, 0.0)

Video divmod ()

Синтаксис divmod ()

Syntax: 
divmod(a, b) -> returns a tuple of two numbers. The first is the result of the division without remainder a/b. The second is the remainder (modulo) a%b.  
Аргументы целое число Дивиденды операции подразделения.
целое число Делитель операции подразделения.
Возвращаемое значение корпус Возвращает кортеж из двух чисел. Первый – это результат разделения без остатка. Второй – остаток (модуло).

Упражнение интерактивных оболочков: понимание divmod ()

Рассмотрим следующий интерактивный код:

Упражнение : Угадай вывод перед запуском кода.

Но прежде чем мы будем двигаться дальше, я рад представить вам мою новую книгу Python Python One-listers (Amazon Link).

Если вам нравятся одноклассники, вы будете любить книгу. Это научит вам все, что нужно знать о Одно строка кода Python. Но это тоже Введение в компьютерную науку , наука о данных, машин обучения и алгоритмы. Вселенная в одной строке Python!

Книга была выпущена в 2020 году с помощью книги по программированию мирового класса Nostarch Press (San Francisco).

Ссылка: https://nostarch.com/pythononeliners.

Точное математическое определение divmod ()

Вы обычно можете использовать divmod (a, b) Функция с двумя целыми числами, одним целым числом и одним поплавкам или двумя поплавками.

Два целых числа. Скажи, что звонишь divmod (a, b) с двумя целыми числами А и B Отказ В этом случае точное математическое определение возвращаемого значения является (A//B,% B) Отказ

a = 5
b = 2
print((a // b, a % b))
print(divmod(a, b))
# OUTPUT:
# (2, 1)
# (2, 1)

Одно целое число и один поплавок. Скажи, что звонишь divmod (a, b) с целым числом А и поплавок B Отказ В этом случае точное математическое определение возвращаемого значения – это возвращаемое значение преобразования целого числа на поплавок и вызов divmod (a, float (b)) .

a = 5.0
b = 2
print((a // b, a % b))
print(divmod(a, b))
# OUTPUT:
# (2.0, 1.0)
# (2.0, 1.0)

Два поплавка. Скажи, что звонишь divmod (a, b) с двумя поплавками А и B Отказ В этом случае точное математическое определение возвращаемого значения является (float (math.floor (a/b)),% b) Отказ

import math

a = 5.0
b = 2.0
print((float(math.floor(a / b)), a % b))
print(divmod(a, b))
# OUTPUT:
# (2.0, 1.0)
# (2.0, 1.0)

Обратите внимание, что из-за неможестью арифметики с плавающей точкой, результат может иметь небольшую ошибку с плавающей точкой в одном из нижних десятичных позиций. Вы можете узнать больше о ловушке с плавающей точкой на блоге Finxter.

Похожие учебники: Ошибка с плавающей точкой объяснила

Python divmod () отрицательные числа

Можете ли вы использовать divmod () Способ отрицательных чисел для дивидендов или дивизора?

Вы можете использовать divmod (a, b) Для отрицательных входных аргументов a , B , или оба. В любом случае, если оба аргумента являются целыми числами, Python выполняет целочисленное разделение A//B Чтобы получить первый элемент и полюсное разделение % b Чтобы получить второй элемент возвращенного кортежа. Оба операции позволяют отрицательные входы А или преступник . Возвращенный кортеж (х, у) рассчитывается так, что x * b + Отказ

Вот пример всех трех случаев:

>>> divmod(-10, -3)
(3, -1)
>>> divmod(-10, 3)
(-4, 2)
>>> divmod(10, -3)
(-4, -2)

Python Divmod () Performance – это быстрее, чем integer division//и Modulo% операторов?

Существует два семантически идентичных способа создания кортежа, где первый элемент является результатом целочисленного подразделения, а второе – это результат работы по модулю:

  • Используйте divmod (a, b) функция.
  • Используйте (A//B,% B) Явная работа с встроенными операторами Python.

Затем мы измеряем производительность расчета прошедшего времени выполнения в миллисекундах при выполнении 10 миллионов вычислений для относительно небольших целых чисел. Давайте начнем с divmod () :

import time
import random

# Small Operands
operands = zip([random.randint(1, 100) for i in range(10**7)],
               [random.randint(1, 100) for i in range(10**7)])

start = time.time()

for i, j in operands:
    divmod(i, j)

stop = time.time()
print('divmod() elapsed time: ', (stop-start), 'milliseconds')
# divmod() elapsed time:  1.7654337882995605 milliseconds

Сравните это на Целочисленное разделение и модуло :

import time
import random

# Small Operands
operands = zip([random.randint(1, 100) for i in range(10**7)],
               [random.randint(1, 100) for i in range(10**7)])

start = time.time()

for i, j in operands:
    (i // j, i % j)

stop = time.time()
print('(i // j, i % j) elapsed time: ', (stop-start), 'milliseconds')
# (i // j, i % j) elapsed time:  1.9048900604248047 milliseconds

Результатом этого эталона производительности в том, что divmod () Требуется 1,76 миллисекунд и явный способ использования целочисленного подразделения и модуло требует 1,90 миллисекундов на 10 000 000 операций. Таким образом, divmod () на 8% быстрее. Причина в том, что явный путь выполняет множество дублирующих операций для расчета результата целочисленного подразделения и операции по модулю, которая вновь использует целочисленное разделение. Этот эффект становится еще более выраженным, если вы используете больше целых чисел.

Python divmod () внедрение

Для целочисленных входных аргументов, вот семантически эквивалент divmod () реализация:

>>> def divmod_own(x, y):
	return (x // y, x % y)

>>> divmod_own(10, 3)
(3, 1)
>>> divmod(10, 3)
(3, 1)

Но обратите внимание, что эта реализация по-прежнему выполняет избыточные вычисления (E.g., целочисленное разделение) и, следовательно, менее эффективно, чем divmod () Отказ

Резюме

Встроенный Python divmod (a, b) Функция занимает два целых или плавающихся номера А и B в качестве ввода аргументов и возвращает кортеж (A//B,% B) Отказ

  • Первое значение кортежа – это результат Целочисленное разделение A//B Отказ
  • Второй кортеж является результатом остатка, также называемых Операция по модулю % b Отказ

В случае поплавковых входов divmod () по-прежнему возвращает дивизию без остатка, округление до следующего раунда.

Я надеюсь, что вам понравилось статью! Чтобы улучшить свое образование Python, вы можете присоединиться к популярной академии по электронной почте Free Finxter:

Хотите увеличить свои навыки Python в веселой и легкой потребности? Рассмотрим следующие ресурсы и стать магистральным кодером!

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python одноклассники (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.

Оригинал: “https://blog.finxter.com/python-divmod/”