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很陌生,也可能不完全理解迭代器的基本理论。
谢谢