我遇到这样的问题:
我有一个整数n,让n =30。
我将n加上另一个整数k。假设,k = 19
但是,我想将n保持在x和y之间,例如20和35。因此,如果n + k> 35,它会在36处跳回20,然后继续加13(19-6 = 13),最终答案是33.
我已经从头开始解决了这个问题,而且时间很长。看起来像这样:
def plus(n,k,x,y):
result= n+k
if result > y: #do sth
if result < x: #do sth
return result
我的问题是,在任何库中是否有任何内置方法可以帮助我解决此问题?非常感谢。
答案 0 :(得分:3)
模运算符%
执行所需的包装。 a % b
给出了将a
除以b
的余数,从而得到以下环绕模式:
>>> for i in range(-2, 12):
... print(f"{i} % 5 = {i % 5}")
...
-2 % 5 = 3
-1 % 5 = 4
0 % 5 = 0
1 % 5 = 1
2 % 5 = 2
3 % 5 = 3
4 % 5 = 4
5 % 5 = 0
6 % 5 = 1
7 % 5 = 2
8 % 5 = 3
9 % 5 = 4
10 % 5 = 0
11 % 5 = 1
(在大多数语言中,您看到的带有左操作数为负的结果并不是您得到的。大多数语言会给您-2
和-1
而不是3
和{{1 }},但事实证明4
和3
的答案更有用。)
您希望保持在4
到x
的范围内,而不是y
到0
,因此我们需要在{调整范围y-1
给我们:
x
样本输出:
%
答案 1 :(得分:0)
您正在寻找模运算符:%
结果= x +(n + k-x)%(y-x + 1)