【发布时间】:2021-01-24 11:50:43
【问题描述】:
根据 a、b、c、d 的值,我有一个要执行的操作,但每次有 16 种可能的排列时,我可能无法获得所有 4 个值,我可以获得 φ ,{a},{b },{c},{d},{a,b},{a,c},{a,d},{b,c},{b,d},{c,d},{a,b ,c},{a,b,d},{a,c,d},{b,c,d},{a,b,c,d}。
def call_me (a=None,b=None,c=None,d=None):
if a:
a1 = a+1
if b:
b1 = b+2
if c:
c1 = c+3
if d:
d1 = d+4
if (a<a1) and (b<b1) and (c<c1) and (d<d1):
#Do something
return "something"
如果我调用call_me(a = 1,b = 2,c = 3,d =4),程序会运行,但如果我调用call_me(a = 1,b = 2,c = 3),它会抛出错误UnboundLocalError: local variable 'd1' referenced before assignment
所以我能想到的唯一方法是覆盖所有组合 (2 ^ N)
if a and b and c and d:
if (a<a1) and (b<b1) and (c<c1) and (d<d1):
return "something 1"
if a and b and c:
if (a<a1) and (b<b1) and (c<c1):
return "something 2"
if a and b and d:
if (a<a1) and (b<b1) and (d<d1):
return "something 3"
#and so on...
有什么方法可以通过不使用这么多的 if 语句来简化这一点?
【问题讨论】:
标签: python if-statement