使用switch语句执行其他语言操作的一般方法是创建包含每个案例的函数的字典:
conds = {
0: lambda: condition_1,
1: lambda: condition_1 or condition_2,
2: lambda: condition_1 or condition_2 or condition_3
}
然后:
while conds[a]():
# do stuff
通过使用lambdas(如果条件特别复杂,可以使用命名函数),可以在每次循环时评估适当的条件,而不是在定义字典时评估一次.
在这个简单的情况下,你的a具有从0开始的连续整数值,你可以使用一个列表并保存一些输入.为了进一步简化,您可以根据前一个条件定义每个条件,因为您每次只是添加一个条件:
conds = [
lambda: condition_1,
lambda: conds[0]() or condition_2,
lambda: conds[1]() or condition_3
]
或者,正如Julien在评论中所建议的那样:
conds = [
lambda: condition_1,
lambda: condition_2,
lambda: condition_3
]
while any(cond() for cond in conds[:a+1]):
# do stuff