196

我怎样才能在 Python 中找到一个数字的除法余数?

例如:
如果数是 26,除数是 7,则除法余数是 5。
(因为 7+7+7=21 和 26-21=5。)

4

13 回答 13

248

您正在寻找模运算符:

a % b

例如:

>>> 26 % 7
5

当然,也许他们希望你自己实现它,这也不会太难。

于 2011-04-07T16:45:29.847 回答
222

可以使用运算符发现除法的其余部分%

>>> 26%7
5

如果您需要商和模,则有内置divmod函数:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
于 2011-05-01T11:49:22.240 回答
60

26 % 7(你会得到余数)

26 / 7(你会得到除数,可以是浮点值)

26 // 7(你会得到除数,只有整数值)

于 2016-03-17T22:14:01.900 回答
34

如果您想在一行代码中获得商和余数(更通用的用例),请使用:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
于 2019-02-21T04:44:51.763 回答
20

从 Python 3.7 开始,有一个新math.remainder()功能:

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

输出:

-2.0  # not 5

请注意,如上所述,%.

引用文档

数学。余数(x, y)

返回 x 相对于 y 的 IEEE 754 样式余数。对于有限 x 和有限非零 y,这是 x - n*y 的差值,其中 n 是与商 x / y 的精确值最接近的整数。如果 x / y 正好在两个连续整数的中间,则使用最接近的偶数表示 n。因此,余数 r = 余数(x,y)总是满足 abs(r) <= 0.5 * abs(y)。

特殊情况遵循 IEEE 754:特别是,对于任何有限 x,remainder(x, math.inf) 是 x,对于任何非 NaN x,remainder(x, 0) 和 remaining(math.inf, x) 会引发 ValueError。如果余数运算的结果为零,则该零的符号与 x 相同。

在使用 IEEE 754 二进制浮点的平台上,此操作的结果始终可以精确表示:不引入舍入误差。

Issue29962描述了创建新函数的基本原理。

于 2018-01-11T14:28:04.903 回答
18

如果你想避免取模,你也可以结合使用四个基本操作:)

26 - (26 // 7 * 7) = 5
于 2013-07-14T03:07:58.407 回答
4

除法时使用 % 而不是 /。这将为您返回剩余部分。所以在你的情况下

26 % 7 = 5
于 2011-04-07T16:47:46.517 回答
4

我们可以通过使用模运算符 (%) 来解决这个问题

26 % 7 = 5;

但是 26 / 7 = 3 因为它会给出商但 % 运算符会给出余数。

于 2018-02-10T19:20:31.920 回答
3

模数将是正确的答案,但如果您手动进行,这应该可以。

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

while num >= div:
    num -= div
print num
于 2011-04-07T17:25:28.043 回答
2

您可以使用模运算符示例求余数

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

它将打印 4

于 2020-04-15T07:50:13.670 回答
0

如果您想要除法问题的余数,只需使用实际的余数规则,就像在数学中一样。当然这不会给你一个十进制输出。

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

如果您想以计算器格式制作,只需替换valone = 8valone = int(input("Value One")). 对 做同样的valtwo = 3事情,但显然不同的变量。

于 2017-10-19T00:33:34.297 回答
0

这是 Python 中剩余的整数版本,它应该给出与 C 的 "%" 运算符相同的结果:

def remainder(n, d):
    return (-1 if n < 0 else 1) * (abs(n) % abs(d))

预期成绩:

remainder(123, 10)   ==  3
remainder(123, -10)  ==  3
remainder(-123, 10)  == -3
remainder(-123, -10) == -3
于 2021-03-19T02:18:06.370 回答
-1

您可以定义一个函数并使用 2 个值(例如 rem(number1,number2) 返回 number1%number2 然后创建一段时间并将其设置为 true 然后为您的函数打印出两个输入,其中包含数字 1 和 2 然后 print(rem (编号 1,编号 2)

于 2020-06-25T11:52:47.233 回答