【发布时间】:2015-07-09 02:23:53
【问题描述】:
事情就是这样!我有一个包含 3 个布尔变量的列表,我想通过按下按钮在它们之间切换。每个布尔变量代表一个由 if 语句执行的函数。如何平滑地更改先前值和当前值?一种更好的方法,例如使用字典而不是列表。
我尝试了什么:
Gesture, Mouse, Keyboard = False, False, False
ActionList = [Gesture, Mouse, Keyboard]
if ActionList[0]:
# blah
elif ActionList[1]:
# blah
elif ActionList[2]:
# blah
编辑:
我设法将工作代码与迄今为止收到的回复放在一起。我仍然认为应该有更好的方法来实现这一点。
actions = {"gesture": False, "mouse": False, "keyboard": False}
CurrentLen = len(actions) # 3
CurrentAct = 1
TrueValue = 0
while True:
ActionName = actions.keys()[TrueValue]
ActionValue = actions.values()[TrueValue]
if actions.values()[(TrueValue - 1 )]: # Disable last
Disable = actions.keys()[(TrueValue - 1 )]
print "Disable %s" % (Disable)
actions[Disable] = not actions[Disable]
if CurrentAct == CurrentLen:
CurrentAct = 1
TrueValue = 0
elif CurrentAct < CurrentLen:
CurrentAct = CurrentAct + 1
TrueValue = CurrentAct - 1
if not ActionValue: # Enable current
print "Enable %s" % (ActionName)
actions[ActionName] = not actions[ActionName]
【问题讨论】:
-
“前值”和“当前值”是什么意思?
-
我的意思是字典中值的位置。因为我需要卸载前一个函数来加载字典中的下一个函数。感谢您的关注,因此请检查我的编辑以获得更好的理解。
-
很遗憾,字典没有顺序。您可能需要使用 OrderedDict。
-
我会对该词进行一些搜索,再次感谢