Python:将数字保持在特定范围内

时间:2020-01-18 08:47:57

标签: python python-3.x

我遇到这样的问题:
我有一个整数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

我的问题是,在任何库中是否有任何内置方法可以帮助我解决此问题?非常感谢。

2 个答案:

答案 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 }},但事实证明43的答案更有用。)

您希望保持在4x的范围内,而不是y0,因此我们需要在{调整范围y-1给我们:

x

样本输出:

%

答案 1 :(得分:0)

您正在寻找模运算符:%

结果= x +(n + k-x)%(y-x + 1)

相关问题