数の除算剰余を見つける


155

Pythonで残りの数の除算を見つけるにはどうすればよいですか?

例:
数値が26で、除算された数が7の場合、除算の余りは5になります
(7 + 7 + 7 = 21および26-21 = 5以降)。


8
彼はすでにやったように見えます:)
クリス・ディクソン

モジュロ演算子を調べることをお勧めします
ユリブ

11
彼は宿題については何も言及したところ、私は表示されません
p1l0t

回答:


205

あなたはモジュロ演算子を探しています:

a % b

例えば:

26 % 7

もちろん、多分彼らはあなたがそれを自分で実装することを望んでいましたが、それもそれほど難しくはないでしょう。


13
モジュロ演算子は常に正の数を返すので、負の数の場合、残りの部分について話すときに期待どおりにならない場合があることに注意してください-10 % 3 == 2。ただしa/b*b + a%b == a、Pythonは常に-Infinityに丸められるため、依然として当てはまります。他の一部の言語とは異なり、0に丸められても-1を返します。
marcelj 2014年

6
これ%は、Python が真のモジュラスを実行するためです。これは、範囲の値を返し[0, divisor)、フロアされた除算と適切にペアになります(負の無限大に向かって)。C言語は、%範囲の値を返し(-divisor, divisor)、標準の除算(ゼロに向かって)とペアになる剰余演算に演算子を使用します。
アーロンフランケ

196

除算の残りの部分は、演算子を使用して発見できます%

>>> 26%7
5

商と剰余の両方が必要な場合は、組み込みdivmod関数があります。

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


18

商と余りを1行のコード(より一般的なユースケース)で取得したい場合は、以下を使用します。

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

17

モジュロを避けたい場合は、4つの基本操作を組み合わせて使用​​することもできます。

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

15

Python 3.7から、新しいmath.remainder()関数があります。

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

出力:

-2.0  # not 5

上記のように、とは異なります%

ドキュメントの引用:

数学。余り(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に従います:特に、remainer(x、math.inf)は、任意の有限xに対してはxであり、remainer(x、0)と残り(math.inf、x)は、非NaN xに対してValueErrorを発生させます。剰余演算の結果がゼロの場合、そのゼロはxと同じ符号になります。

IEEE 754 2進浮動小数点を使用するプラットフォームでは、この演算の結果は常に正確に表現可能です。丸めエラーは発生しません。

問題29962では、新しい関数を作成するための根拠について説明しています。


math.remainderは、Python 3.7の例のように機能しない可能性があります>>> math.remainder(-2.99,2)-0.9900000000000002 >>> math.remainder(-3,2)1.0
ドミニク


4

Moduloが正しい答えですが、手動で行う場合はこれでうまくいくはずです。

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

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

5
numが> = 0およびdif> 0の場合にのみ機能します。
12431234123412341234123

4

モジュラス演算子(%)を使用してこれを解決できます

26%7 = 5;

しかし、26/7 = 3は商を与えますが、%演算子は剰余を与えるためです。


3
Python 2、26 / 7 = 3を使用する場合、Python 3の場合、26/7は約3.7142857142857144
Antti A


0

除算の残りの問題が必要な場合は、数学と同様に、実際の残りのルールを使用してください。確かに、これは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行いますが、異なる変数は明らかに異なります。


valone/valtwoint にキャストする必要があります。それ以外の場合は、浮動小数点数になります。
AliYılmaz19年

-1

関数を定義して、number1%number2を返すrem(number1、number2)のような2つの値で余りを呼び出し、whileを作成してtrueに設定し、1と2を保持する関数の2つの入力を出力してから、print(rem (数値1、数値2)


1
実例を追加してください。いくつかの理論的なコードを説明することは理解しにくいかもしれません。
mischva11
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.