如何在Python中找到一个数的除法余数呢?
例如: 如果这个数是26,整除数是7,那么整除余数是5。 (因为7+7+7=21,26-21=5。)
有关简单的可整除性测试,请参见如何检查一个数是否能被另一个数整除。
如何在Python中找到一个数的除法余数呢?
例如: 如果这个数是26,整除数是7,那么整除余数是5。 (因为7+7+7=21,26-21=5。)
有关简单的可整除性测试,请参见如何检查一个数是否能被另一个数整除。
当前回答
这是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
其他回答
从Python 3.7开始,有一个新的math.remainder()函数:
from math import remainder
print(remainder(26,7))
输出:
-2.0 # not 5
注意,如上所述,它与%不同。
引用文档:
math.remainder(x, y) Return the IEEE 754-style remainder of x with respect to y. For finite x and finite nonzero y, this is the difference x - n*y, where n is the closest integer to the exact value of the quotient x / y. If x / y is exactly halfway between two consecutive integers, the nearest even integer is used for n. The remainder r = remainder(x, y) thus always satisfies abs(r) <= 0.5 * abs(y). Special cases follow IEEE 754: in particular, remainder(x, math.inf) is x for any finite x, and remainder(x, 0) and remainder(math.inf, x) raise ValueError for any non-NaN x. If the result of the remainder operation is zero, that zero will have the same sign as x. On platforms using IEEE 754 binary floating-point, the result of this operation is always exactly representable: no rounding error is introduced.
Issue29962描述了创建新函数的基本原理。
取模是正确的答案,但如果你手动做的话,这应该是可行的。
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
你可以用模算子求余数 例子
a=14
b=10
print(a%b)
它会输出4
这是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
我们可以用模算子(%)来解决这个问题
26%7 = 5;
但 26 / 7 = 3,因为它会给出商,而%运算符会给出余数。