gpt4 book ai didi

python - 有额外的 while 循环条件......基于条件?

转载 作者:太空狗 更新时间:2023-10-29 22:07:39 25 4
gpt4 key购买 nike

变量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
}

然后:

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

关于python - 有额外的 while 循环条件......基于条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36025026/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com