13

xに数値yを追加したいのですが、xをラップアラウンドして0から48の間に保つようにします。yは負になる可能性がありますが、48を超える大きさになることはありません。これを行うより良い方法はありますか。

x = x + y
if x >= 48:
    x = x - 48
elif x < 0:
    x = x + 48

4

7 に答える 7

22
x = (x + y) % 48

モジュロ演算子はあなたの友達です。

>>> 48 % 48
0: 0
>>> 49 % 48
1: 1
>>> -1 % 48
2: 47
>>> -12 % 48
3: 36
>>> 0 % 48
4: 0
>>> 12 % 48
5: 12
于 2011-07-13T20:16:49.697 に答える
3

モジュラー算術を実行している場合は、モジュロ演算子を使用する必要があります。

x = (x + y) % 48
于 2011-07-13T20:17:29.867 に答える
3

(x+ y)% 48あなたにぴったりではないでしょう。モジュロの詳細については、こちらをご覧ください。

于 2011-07-13T20:18:58.227 に答える
2

モジュロ演算子を使用できます。

x = (x+y) % 48
于 2011-07-13T20:17:08.387 に答える
2

あなたはただ使うことができます

x = (x+y) % 48

xこれはあなたにどんな数に対してもポジティブを与えるでしょう。

于 2011-07-13T20:17:39.240 に答える
1

(x + y)%48

48を好きなものに置き換えてください。

于 2011-07-13T20:19:10.773 に答える
1

http://anh.cs.luc.edu/331/code/mod_arith.py http://anh.cs.luc.edu/331/のように、モジュラー演算を処理するクラスを作成することもできます。
code / mod.py

于 2014-08-11T10:25:45.420 に答える