变量a
可以取任意数量的值。的价值a
是 while 循环的额外预定义条件的数量。
这可以通过多个来完成elif
陈述,但有没有更干净的方法来做到这一点?
if a == 0:
while condition_1:
...
elif a == 1:
while condition_1 or condition_2:
...
elif a == 2:
while condition_1 or condition_2 or condition_3:
...
执行其他语言所做的一般方法switch
语句是创建一个包含每个案例的函数的字典:
conds = {
0: lambda: condition_1,
1: lambda: condition_1 or condition_2,
2: lambda: condition_1 or condition_2 or condition_3
}
Then:
while conds[a]():
# do stuff
通过使用 lambda(或命名函数,如果您的条件特别复杂),可以在每次循环中评估适当的条件,而不是在定义字典时评估一次。
在这个简单的例子中,你的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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)