Найти остаток от деления числа

155

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

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

боб
источник
8
Похоже, он уже сделал :)
Крис Диксон
Я бы посоветовал посмотреть на оператора по модулю
yurib
11
Я не вижу, где он упомянул что-нибудь о домашней работе
p1l0t

Ответы:

205

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

a % b

например:

26 % 7

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

Уку Лоськит
источник
13
Обратите внимание , что оператор по модулю всегда возвращает положительное число, так и для отрицательных чисел не может быть то , что можно было бы ожидать , когда речь идет об остатке: -10 % 3 == 2. Однако a/b*b + a%b == aвсе еще остается верным, поскольку python всегда округляется к -Infinity, в отличие от некоторых других языков, которые округляются к 0, но возвращают -1.
marcelj
6
Это связано с тем, что Python %выполняет истинный модуль, который возвращает значения в диапазоне [0, divisor)и хорошо сочетается с разделением по этажам (к отрицательной бесконечности). Языки C используют %оператор для операций с остатками, который возвращает значения в диапазоне (-divisor, divisor)и хорошо сочетается со стандартным делением (к нулю).
Аарон Франке
197

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

>>> 26%7
5

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

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
tzot
источник
47

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

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

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

Каруш Махаджан
источник
18

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

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
Алок Наяк
источник
17

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

26 - (26 // 7 * 7) = 5
Alys
источник
16

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

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

Вывод:

-2.0  # not 5

Обратите внимание, как и выше, это не то же самое, что %.

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

математика остаток (х, у)

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

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

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

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

Chris_Rands
источник
math.remainder может работать не так, как вы ожидаете, пример для python 3.7 >>> math.remainder (-2.99,2) -0.9900000000000002 >>> math.remainder (-3,2) 1.0
Доминик Барракло
4

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

26 % 7 = 5
Бендер Величайший
источник
4

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

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

while num >= div:
    num -= div
print num
бондарь
источник
5
Работает только если num>> 0 и dif> 0.
12431234123412341234123
4

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

26% 7 = 5;

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

KATTAMURU ANIL
источник
3
Если вы используете Python 2, 26/7 = 3, для Python 3 значение 26/7 составляет около 3,7142857142857144
Antti A
2

Вы можете найти остаток с помощью оператора по модулю. Пример

a=14
b=10
print(a%b)

Будет печатать 4

Сварнима Шишодия
источник
0

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

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 очевидно.

С. Ахмад
источник
Вы должны привести valone/valtwoк Int. иначе это приведет к числу с плавающей точкой.
Али Йылмаз
-1

Вы можете определить функцию и вызвать ее остаток с двумя значениями, такими как rem (номер1, номер2), который возвращает число1%, число2, затем создать время и установить его в значение true, затем распечатать два ввода для вашей функции, содержащей числа 1 и 2, и затем напечатать (rem (число1, число2)

user13790410
источник
1
Пожалуйста, добавьте рабочий пример. Объяснение некоторого теоретического кода может быть трудным для понимания.
mischva11