web-dev-qa-db-ja.com

python

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

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

13
Double AA
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
18
nmichaels

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

x = (x + y) % 48
3
JAB

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

x = (x+y) % 48
2
Andre Holzner

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

x = (x+y) % 48

これにより、任意の数に対して正のxが得られます。

2
Howard

(x+ y)% 48だけがあなたに適しているのではないでしょうか。モジュロの詳細を参照してください ここ

2
eat

(x + y)%48

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

1
Doug Stephen

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

1
peterhil