在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
这种方法是可以的,因为它只会检查标志,而不是每次计算每个括号的条件,这是由于在Python中“and”的工作方式导致的。
或者
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
也许使用相同的开销可以实现同样的效果。
我只是想知道是否有人可以建议更好的方法,从编程实践和可读性方面考虑,或者这是最好的一般方法。
谢谢。
for cond in list_of_conditions:while cond...
,根本没有检查标志,如果标志具有重复值,则会丢失条件,因为您将具有重复键。 - Padraic Cunningham