Pythonで数値の除算剰余を見つける方法を教えてください。
例えば:
数が26で分割数が7の場合、分割剰余は5です。
(7 + 7 + 7 = 21、26-21 = 5のため)
モジュロ演算子を探しています。
a % b
例えば:
26 % 7
もちろん、彼らはあなたにそれを自分で実装してほしかったかもしれません、それもそれほど難しくないでしょう。
除算の残りの部分は演算子%
を使って発見することができます。
>>> 26%7
5
商とモジュロの両方が必要な場合は、組み込みのdivmod
関数があります。
>>> seconds= 137
>>> minutes, seconds= divmod(seconds, 60)
26%7(残りがある)
26/7(除数はfloat値になることがあります)
26 // 7(約数のみの整数値になる)
モジュロを避けたい場合は、4つの基本操作を組み合わせて使用することもできます。
26 - (26 // 7 * 7) = 5
Python 3.7から、新しいmath.remainder()
関数があります。
from math import remainder
print(remainder(26,7))
ドキュメント を引用する:
数学剰余(x、y)
Yに関するxのIEEE 754形式の余りを返します。有限xおよび有限の非ゼロyの場合、これは差x - n * yです。ここで、nは商x/yの正確な値に最も近い整数です。 x/yが2つの連続する整数のちょうど中間にある場合、最も近い偶数の整数がnに使用されます。したがって、剰余r =剰余(x、y)は常にabs(r)≦0.5 * abs(y)を満たす。
特別な場合はIEEE 754に従います:特に、あらゆる有限のxに対して、residual(x、math.inf)はxであり、あらゆるNaNでないxに対しては、residual(x、0)とresidual(math.inf、x)はValueErrorを上げます。剰余演算の結果がゼロの場合、そのゼロはxと同じ符号になります。
IEEE 754バイナリ浮動小数点を使用するプラットフォームでは、この操作の結果は常に正確に表現可能です。丸め誤差は発生しません。
Issue29962 新しい関数を作成するための論理的根拠について説明します。
分割するときは、/の代わりに%を使用してください。これはあなたに残りを返します。だからあなたの場合
26 % 7 = 5
Moduloが正解ですが、手動でやっているならこれでうまくいくはずです。
num = input("Enter a number: ")
div = input("Enter a divisor: ")
while num >= div:
num -= div
print num
これをモジュラス演算子(%)を使って解くことができます。
26%7 = 5;
しかし、26/7 = 3は商になりますが、%演算子は余りになります。
1行のコードで商と余りを求めたい場合(より一般的な使用例)は、次のようにします。
quotient, remainder = divmod(dividend, divisor)
#or
divmod(26, 7)
除算問題の残りの部分が必要な場合は、数学の場合と同様に、実際の剰余規則を使用してください。確かにこれはあなたに10進数の出力を与えないでしょう。
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
でも同じことをしますが、明らかに違うものがあります。