我想弄清楚如何将我的if语句群缩短为更短的内容。
这是我想要做的较小版本。
import sys
v1 = "1"
v2 = "2"
if sys.argv[1] == "any" and sys.argv[2] == "any":
print "nofliter"
elif sys.argv[1] == v1 and sys.argv[2] == v2:
print "filtering both"
elif sys.argv[1] == v1 and sys.argv[2] == 'any':
print "filtering half"
它非常令人困惑。但我希望有人通过阅读它来获得我想要做的事情。到目前为止,我只设置了2个变量,但是当我完成后,我可能会设置超过8个。
基本上如果没有定义某些东西,那么一切都没问题。
示例:
if varible1 == 80 and varible2 == 100:
print "something"
if varible1 == anything and varible2 == 230:
print "something"
我不知道我的pesudo代码是否有意义,但这只是它的正义。
答案 0 :(得分:0)
如果我理解你的目标,你可能想这样写:
possible_values = (1, 2, 3, 4) # put the acceptable values of arguments here
if (sys.argv[1] in possible_values and sys.argv[2] in possible_values):
print("filtering both")
elif (sys.argv[1] in possible_values or sys.argv[2] in possible_values):
print("filtering half")
else:
print("nofilter")
如果这不是您想要做的,请解释更多。
答案 1 :(得分:0)
使用带frozenset
键的字典:
params_dict = {frozenset(('any',)): 'nofilter',
frozenset(('1', '2')): 'filter both',
frozenset(('any', '1')): 'filter half',
frozenset(('any', '2')): 'filter half',
....
}
params_descr = params_dict.get(frozenset(sys.argv[1:3]))
if params_descr is not None:
print(params_descr)