Python 在边界中保留任何数字
我希望能够在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
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)