求一个数的除余数

如何在Python中找到一个数的除法余数呢?

例如:
如果这个数是26,整除数是7,那么整除余数是5。< br / > (因为7+7+7=21,26-21=5)


有关简单的可整除性测试,请参见如何检查一个数是否能被另一个数整除?

718437 次浏览

你正在寻找模运算符:

a % b

例如:

>>> 26 % 7
5

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

除法时用%代替/。这将为您返回余数。所以在你的案例中

26 % 7 = 5

取模是正确的答案,但如果你手动做的话,这应该是可行的。

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


while num >= div:
num -= div
print num

除法的余数可以使用操作符%来发现:

>>> 26%7
5

如果你同时需要商和模,有内置的divmod函数:

>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)

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

26 - (26 // 7 * 7) = 5

26 % 7(你将得到余数)

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

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

如果你想求除法问题的余数,就用实际的余数法则,就像数学一样。当然,这不会给你一个十进制输出。

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执行同样的操作,但显然不同的变量。

从Python 3.7开始,有一个新的math.remainder()函数:

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

输出:

-2.0  # not 5

注意,如上所述,这不一样%

引用文档:

数学。剩余部分 (x, y)

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

特殊情况下遵循IEEE 754:特别是,remainder(x, math.inf) 是x对任意有限x,余数(x, 0)和余数(数学。正无穷,x) 对于任何非nan x抛出ValueError。如果余数的结果 操作为0,0的符号将与x相同

在使用IEEE 754二进制浮点的平台上,此结果 运算总是完全可表示的:没有舍入误差 介绍。< / p >

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

我们可以用模算子(%)来解决这个问题

26% 7 = 5;

< p >但 26 / 7 = 3,因为它会给出商,但%运算符会给出余数

如果你想在一行代码中得到商和余数(更通用的情况),使用:

quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)

你可以用模运算符求余数 示例< / p >

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

它会输出4

你可以定义一个函数,并将其称为具有2个值的余数,如rem(number1,number2),返回number1%number2 然后创建一个while并将其设置为true,然后为持有数字1和2的函数打印两个输入,然后打印(rem(number1,number2)

这是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