gpt4 book ai didi

Python:While 循环,在不同条件下执行相同的代码。优雅与架空

转载 作者:太空宇宙 更新时间:2023-11-03 12:58:46 25 4
gpt4 key购买 nike

在 python 中:我希望在 while 循环中执行相同的代码块,但在不同的条件下,带有一个应该检查哪个条件的标志。此外,在这种情况下,标志不会在执行期间更改,并且只有一个标志对于程序的这一部分是事件的。

我可以这样做:

#user inputs flag
if flag == "flag1": flag1 = True
elif flag == "flag2": flag2 = True
#...
#define parameters
while (flag1 and condition1) or (flag2 and condition2) ... or (flagN and conditionN):
#do stuff #using parameters

由于“and”在 python 中的工作方式,这种方法可以,因为它只会检查标志,而不会每次都计算每个括号的条件。

def dostuff(parameters):
#do stuff

#user inputs flag
if flag == "flag1": flag1 = True
elif flag == "flag2": flag2 = True
#...

#define parameters

if flag1:
while(condition1):
dostuff(parameters)
elif flag2:
while(condition2):
dostuff(parameters)
etc... down to N

会完成相同的事情,可能是相同的开销。

我只是想知道是否有人可以在编程实践和可读性方面提出更好的方法,或者这是否是最好的通用方法。

谢谢

最佳答案

您可以使用 lambda 表达式的 dict:

conditions = {
flag1: lambda: cond1,
flag2: lambda: cond2,
flag3: lambda: cond3}

while conditions[flag]():
do_stuff(parameters)

例子:

conditions = {
"flag1": lambda: x < 10,
"flag2": lambda: x < 3,
"flag3": lambda: x < 5}

x = 0
while conditions["flag2"]():
print(x)
x += 1

输出:

0
1
2

关于Python:While 循环,在不同条件下执行相同的代码。优雅与架空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30053128/

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