【发布时间】:2011-07-31 20:56:36
【问题描述】:
如何在 Python 中找到数字的除数余数?
例如:
若数为 26,除数为 7,则除数余数为 5。
(因为 7+7+7=21 和 26-21=5。)
【问题讨论】:
-
我建议查找modulo 运算符
如何在 Python 中找到数字的除数余数?
例如:
若数为 26,除数为 7,则除数余数为 5。
(因为 7+7+7=21 和 26-21=5。)
【问题讨论】:
您正在寻找模运算符:
a % b
例如:
>>> 26 % 7
5
当然,也许他们希望你自己实现,这也不会太难。
【讨论】:
-10 % 3 == 2。但是a/b*b + a%b == a 仍然成立,因为 python 总是朝 -Infinity 舍入,这与其他一些语言不同,后者朝 0 舍入但会返回 -1。
% 执行一个真正的模数,它返回 [0, divisor) 范围内的值,并与地板除法(朝向负无穷大)很好地配对。 C 语言使用 % 运算符进行余数运算,该运算符返回 (-divisor, divisor) 范围内的值,并与标准除法(接近零)很好地配对。
除法时使用 % 而不是 /。这将为您返回剩余部分。所以在你的情况下
26 % 7 = 5
【讨论】:
Modulo 是正确的答案,但如果您手动执行,这应该可以。
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 做同样的事情,但显然不同的变量。
【讨论】:
valone/valtwo 转换为 int。否则它会产生一个浮点数。
从 Python 3.7 开始,有一个新的 math.remainder() 函数:
from math import remainder
print(remainder(26,7))
输出:
-2.0 # not 5
注意,如上所述,it's not the same 为 %。
数学。余数(x, y)
返回 x 的 IEEE 754 样式余数 尊重 y。对于有限 x 和有限非零 y,这是 差 x - n*y,其中 n 是最接近精确值的整数 的商 x / y。如果 x / y 正好在两者之间 连续整数,n 使用最接近的偶数。这 余数 r = 余数(x, y) 因此总是满足 abs(r)
特殊情况遵循 IEEE 754:特别是剩余(x,math.inf) 是任何有限 x 的 x,余数 (x, 0) 和余数 (math.inf, x) 为任何非 NaN x 引发 ValueError。如果余数的结果 操作为零,该零将与 x 具有相同的符号。
在使用 IEEE 754 二进制浮点的平台上,此结果 运算总是可以精确表示的:没有舍入误差 介绍了。
Issue29962 描述了创建新函数的基本原理。
【讨论】:
我们可以通过使用模运算符(%)来解决这个问题
26 % 7 = 5;
但是 26 / 7 = 3 因为它会给出商,但 % 运算符会给出余数。
【讨论】:
如果您想在一行代码中获得商和余数(更通用的用例),请使用:
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
【讨论】:
quotient 的更简单方法是使用//。 quotient = dividend // divisor
您可以使用模运算符找到余数 示例
a=14
b=10
print(a%b)
它将打印 4
【讨论】:
% 运算符的模块,这在数学上是不同的。更多信息:stackoverflow.com/questions/4432208/…
您可以定义一个函数并使用 2 个值(如 rem(number1,number2) 返回 number1%number2 然后创建一段时间并将其设置为 true 然后为您的函数打印两个输入,分别保存数字 1 和 2 然后 print(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
【讨论】: