Python在一个范围内创建一个数字循环

时间:2016-09-25 17:21:39

标签: python

所以我看到了这篇帖子,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?!?

2 个答案:

答案 0 :(得分:0)

一种选择是设置variable = (|variable| % (MAX - MIN + 1)) + MIN。这将为您提供介于MINMAX之间的数字,包括在内。

请注意,只有当variableMAXMIN为非负整数且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 },包括MINMAX之间的所有{{1}}。

答案 1 :(得分:0)

刚想通了。

def loop(n, minn, maxn):

    while n > maxn:
        n = n - (maxn - minn)
    while n < minn:
        n = n + (maxn - minn)

    return n

我认为这应该适用于大多数情况,包括负数和范围。