所以我看到了这篇帖子,on limiting numbers,但我注意到如果它不在范围内,它会削减一些数字。
有没有办法这样做:
variable = 25
如果您的范围是1-20,那么variable
可以变为5吗?
或者如果variable = 41
,它变为1?
我试过这个:
def loop(number, maxn, minn):
if number > maxn:
number = maxn - number
return number
范围为0-20,数量为40,我得到-20?!?
答案 0 :(得分:0)
一种选择是设置variable = (|variable| % (MAX - MIN + 1)) + MIN
。这将为您提供介于MIN
和MAX
之间的数字,包括在内。
请注意,只有当variable
,MAX
和MIN
为非负整数且MAX >= MIN >= 0
时才会有效。
这背后的原因如下:|variable| % (MAX - MIN + 1)
必然是非负的,因为MAX - MIN + 1
和|variable|
是非负的,因此模数必须是非负的。因此它可以是最低的零。我们之后会添加MIN
,因此总数最低的数字可以是MIN
。
最多,|variable| % (MAX - MIN + 1)
为MAX - MIN
,这又取决于模运算符的性质。之后添加MIN
会给我们MAX
。因此,最高输出将是MAX
。
否variable
会给出一个低于MIN
或高于MAX
的数字,而variable
总是等于n = (|variable| % (MAX - MIN + 1)) + MIN
n
},包括MIN
和MAX
之间的所有{{1}}。
答案 1 :(得分:0)
刚想通了。
def loop(n, minn, maxn):
while n > maxn:
n = n - (maxn - minn)
while n < minn:
n = n + (maxn - minn)
return n
我认为这应该适用于大多数情况,包括负数和范围。