【发布时间】:2019-08-20 17:05:08
【问题描述】:
所以,我有一系列动作要执行,基于 4 个条件变量 - 比如说 x、y、z 和 t。这些变量中的每一个都有一个可能的 True 或 False 值。因此,总共有 16 种可能的排列。而且我需要为每个排列执行不同的操作。
什么是最好的方法而不是制作一个巨大的 if-else 结构。
让我们看一个简化的例子。如果我尝试将所有不同的排列包含到一个大型 if-else 构造中,这就是我的代码的外观。
if (x == True):
if (y == True):
if (z == True):
if (t == True):
print ("Case 1")
else:
print ("Case 2")
else:
if (t == True):
print ("Case 3")
else:
print ("Case 4")
else:
if (z == True):
if (t == True):
print ("Case 5")
else:
print ("Case 6")
else:
if (t == True):
print ("Case 7")
else:
print ("Case 8")
else:
if (y == True):
if (z == True):
if (t == True):
print ("Case 9")
else:
print ("Case 10")
else:
if (t == True):
print ("Case 11")
else:
print ("Case 12")
else:
if (z == True):
if (t == True):
print ("Case 13")
else:
print ("Case 14")
else:
if (t == True):
print ("Case 15")
else:
print ("Case 16")
有什么办法可以简化吗?显然,我对每个案例的目标都比打印“案例 1”要复杂。
【问题讨论】:
-
二进制数从0到15?你的代码相当于
print("Case " + str(8*(x==True) + 4*(y==True) + 2*(z==True) + 1*(t == True))) -
在一个 if-else 语句中不嵌套并检查所有 4 个值 16 次可能更容易。
-
通常使用
if x:而不是if (x == True):更合适 -
@JohnColeman 不错的解决方案。不过,您不需要在每个变量上都添加 '==True' 部分。
-
@JohnKugelman 当然——但情况 确实 对应于 0-15 中的数字。可以计算该数字,然后分支到案例。
标签: python if-statement conditional combinations