Python 将这个if语句集群转换为somthing clearner
嗯,我想弄明白如何把我的if语句的小簇缩短成更短的东西 这是我尝试做的一个小版本Python 将这个if语句集群转换为somthing clearner,python,python-2.7,Python,Python 2.7,嗯,我想弄明白如何把我的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
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代码是否有意义,但仅此而已。如果我正确理解您的目标,您可能希望这样编写:
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")
如果您不想这样做,请详细解释。使用字典和
冻结设置
键:
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)
你能说明什么是有效输入,即参数1和参数2的有效值吗?这是可行的,有3个不同的变量,其中一些变量的可接受值超过10亿。不过我想我自己也弄明白了。