Найти остаток от деления числа - PullRequest
120 голосов
/ 07 апреля 2011

Как я могу найти остаток от деления числа в Python?

Например:
Если число равно 26 и число делится на 7, то остаток от деления равен 5.
(с 7 + 7 + 7 = 21 и 26-21 = 5.) ​​

Ответы [ 10 ]

175 голосов
/ 01 мая 2011

Остальная часть деления может быть обнаружена с помощью оператора %:

>>> 26%7
5

Если вам нужны как частное, так и по модулю, есть встроенная функция divmod:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
162 голосов
/ 07 апреля 2011

вы ищете оператора по модулю:

a % b

например:

26 % 7

Конечно, возможно, они хотели, чтобы вы реализовали его самостоятельно, что было бы не слишкомтоже сложно.

32 голосов
/ 18 марта 2016

26% 7 (вы получите остаток)

26/7 (делитель может иметь значение с плавающей запятой)

26 // 7 (вы получите делитель только целое значение))

14 голосов
/ 14 июля 2013

Если вы хотите избежать по модулю, вы также можете использовать комбинацию из четырех основных операций:)

26 - (26 // 7 * 7) = 5
10 голосов
/ 11 января 2018

В Python 3.7 появилась новая функция math.remainder():

from math import remainder
print(remainder(26,7))

Цитирование документации :

математика. остаток (x, y)

Возвращает остаток x в стиле IEEE 754 относительно y.Для конечного x и конечного ненулевого y это разность x - n * y, где n - ближайшее целое число к точному значению фактора x / y.Если x / y находится точно посередине между двумя последовательными целыми числами, ближайшее n четного целого используется для n.Таким образом, остаток r = остаток (x, y) всегда удовлетворяет abs (r) <= 0.5 * abs (y). </p>

Особые случаи следуют IEEE 754: в частности, остаток (x, math.inf) равенx для любого конечного x, а остаток (x, 0) и остаток (math.inf, x) вызывают ValueError для любого не NaN x.Если результат операции остатка равен нулю, этот ноль будет иметь тот же знак, что и x.

На платформах, использующих двоичную с плавающей точкой IEEE 754, результат этой операции всегда точно представлен: ошибки округления нет

Issue29962 описывает обоснование создания новой функции.

4 голосов
/ 07 апреля 2011

Используйте% вместо /, когда вы делите.Это вернет остаток для вас.Так что в вашем случае

26 % 7 = 5
3 голосов
/ 07 апреля 2011

Модуло будет правильным ответом, но если вы делаете это вручную, это должно сработать.

num = input("Enter a number: ")
div = input("Enter a divisor: ")

while num >= div:
    num -= div
print num
2 голосов
/ 10 февраля 2018

Мы можем решить эту проблему с помощью оператора модуля (%)

26% 7 = 5;

но 26/7 = 3, потому что это даст частное, а оператор% даст остаток.

1 голос
/ 21 февраля 2019

Если вы хотите получить частное и остаток в одной строке кода (более общий вариант использования), используйте:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
0 голосов
/ 19 октября 2017

Если вы хотите получить остаток от своей проблемы деления, просто используйте действительные правила остатка, как в математике. Конечно, это не даст вам десятичный вывод.

valone = 8
valtwo = 3
x = valone / valtwo
r = valone - (valtwo * x)
print "Answer: %s with a remainder of %s" % (x, r)

Если вы хотите сделать это в формате калькулятора, просто замените valone = 8 с valone = int(input("Value One")). Сделайте то же самое с valtwo = 3, но, очевидно, с разными vairables.

...