Ответ 1
x = (x + y) % 48
Оператор modulo - ваш друг.
>>> 48 % 48
0: 0
>>> 49 % 48
1: 1
>>> -1 % 48
2: 47
>>> -12 % 48
3: 36
>>> 0 % 48
4: 0
>>> 12 % 48
5: 12
Я хочу добавить число y в x, но x обернуть вокруг, чтобы оставаться между 0 и 48. Примечание y может быть отрицательным, но никогда не будет иметь величину больше 48. Есть ли лучший способ сделать это, чем:
x = x + y
if x >= 48:
x = x - 48
elif x < 0:
x = x + 48
?
x = (x + y) % 48
Оператор modulo - ваш друг.
>>> 48 % 48
0: 0
>>> 49 % 48
1: 1
>>> -1 % 48
2: 47
>>> -12 % 48
3: 36
>>> 0 % 48
4: 0
>>> 12 % 48
5: 12
Если вы выполняете модульную арифметику, вам просто нужно использовать оператор modulo.
x = (x + y) % 48
вы можете использовать оператор modulo:
x = (x+y) % 48
Вы можете просто использовать
x = (x+y) % 48
который даст вам положительный x
для любых чисел.
Не подходит ли вам только (x+ y)% 48
. Подробнее о modulo здесь.
(x + y)% 48
Замените, пожалуйста, все, что угодно.
Вы также можете создать класс для обработки модульной арифметики, как это было сделано здесь:
http://anh.cs.luc.edu/331/code/mod_arith.py
http://anh.cs.luc.edu/331/code/mod.py