Python 在边界中保留任何数字

Python 在边界中保留任何数字,python,algorithm,numbers,Python,Algorithm,Numbers,我希望能够在Python中有一个存储三个值的类。值、最小值和最大值。这样做的目的是创建一个名为addVal()的方法,该方法获取一个数字并将其添加到当前值。问题是,如果该数字加上当前值的偏移量大于存储的最大值,它将返回到最小值并继续运行 这是我到目前为止的课程: class Num: def __init__(self, min = 0, max = 26, val = 0): self.min = min self.max = max s

我希望能够在Python中有一个存储三个值的类。值、最小值和最大值。这样做的目的是创建一个名为
addVal()
的方法,该方法获取一个数字并将其添加到当前值。问题是,如果该数字加上当前值的偏移量大于存储的最大值,它将返回到最小值并继续运行

这是我到目前为止的课程:

class Num:
    def __init__(self, min = 0, max = 26, val = 0):
        self.min = min
        self.max = max
        self.val = val

    def setMin(self, min):
        self.min = min

    def setMax(self, max):
        self.max = max

    def addVal(self, num):
        if num+self.val > self.max:
            # Only works with values when num%max + val is greater than max
            self.val = min + (num%val - (max-(num%val)))
        else:
            self.val += num
例如:

num = Num(0, 65, 60) # num = Num(min, max, val)
num.val # returns 60
num.addVal(15)
num.val # returns 10 (because we can use 5 of the 15 before going over the max and having a remaining ten to add to the min)
num.addVal(20)
num.val # returns 30
num.addVal(265)
num.val # # returns 35
所有这些都需要处理任何大小的负值。我想不出一个优雅的解决方案

我很想得到一个适用于任何值的线性函数,但我无法找到一个合适的组合,使它适用于任何值。当然,我可以强迫它对模运算进行基本计算,并使它适用于各种可能出现的情况下的一些逻辑结构,但是我很想找到一个简单优雅的解决方案,只是开箱即用,盲目地使用任何价值


这是我当前的类:

可以通过从值中删除
min
的偏移量,然后在再次添加偏移量之前进行添加
mod(max-min)
来计算您的环绕数。以下代码适用于
num
val
min
max
的任何值(只要
min
):


见鬼,如果你想要优雅——为什么不直接覆盖
\uuuuidd\uuuu
<代码>my_num=num(最小值=0,最大值=26,val=3);my_num+=25;my_num==2#True
def addVal(self, num):
    self.val = self.min + (self.val + num - self.min) % (self.max - self.min)