0
我希望能夠在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
所有這一切都需要與負值工作過任何size..I的想不通優雅這個解決方案..
我會喜歡得到一個與任何價值的作品,但我不能找出相當正確的組合,讓它與任何價值的工作......當然我可以暴力forc它會對模數運算進行基本計算,並在各種可能出現的情況下使它與某種邏輯結構一起工作,但是我很想找到一個非常簡單而優雅的解決方案,它可以盲目地以任何價值開箱即用。
這是我目前等級:
和Heck,如果你想優雅 - 爲什麼不直接覆蓋'__iadd__'? 'my_num = Num(min = 0,max = 26,val = 3); my_num + = 25; my_num == 2#True' –