1
我正在編寫一個程序,它具有兩個不同的狀態(一個可轉換單位轉換器,位於英尺和米之間),程序中的多個函數取決於當前狀態(交替itertools的當前值。 cycle()迭代器)。用戶可以調用反轉函數切換當前狀態並反轉計算轉換函數。讀取當前迭代器值而不增加在Python中
目前,我用下一個(currentstate)返回迭代器的這樣的下一個值:
self.currentstate = cycle(range(2))
def reverse(self):
if next(self.currentstate) == 0:
self.feet_label.grid(column=2, row=2, sticky=tk.W)
if next(self.currentstate) == 1:
self.feet_label.grid(column=2, row=1, sticky=tk.W)
def calculate(self, *args):
if next(self.currentstate) == 0:
# convert feet to meters
if next(self.currentstate) == 1:
# convert meters to feet
不幸的是,每當一個函數被調用,if語句的計算方式,將循環迭代遞增下一個操作員和下一個呼叫會產生不同的結果。計算函數可能會在相同的狀態下多次調用,所以我希望以某種方式檢索迭代器的當前值而不修改或增加運算符。
def calculate(self, *args):
if currentvalue(self.currentstate) == 0:
# convert feet to meters
if currentvalue(self.currentstate) == 1:
# convert meters to feet
我發現一個非常醜陋的解決方法,包括每次if語句調用next(currentvalue)兩次來重置二進制值。這可能是寫這樣兩個狀態程序的非常糟糕的方式,但似乎應該有一種方法來做到這一點。我對Python很陌生,也可能不完全理解迭代器的基本理論。
謝謝