首页 > 解决方案 > 用 7 个语句检查 3 个变量的 else 语句的更简单方法

问题描述

有没有一种简单的方法来测试 2 个具有 3 个条件的变量或 3 个具有 7 个条件的变量等等?

def checkXYZ():
    if x==1 and y==0 and z==0:
        doX()
    elif x==0 and y==1 and z==0:
        doY()
    elif x==0 and y==0 and z==1:
        doZ()

    elif x==1 and y==1 and z==0:
        doXY()
    elif x==0 and y==1 and z==1:
        doYZ()
    elif x==1 and y==0 and z==1:
        doXZ()

    elif x==1 and y==1 and z==1:
        doXYZ()

标签: pythonif-statementlogic

解决方案


这是一个特定于问题的答案,但您可以实现checkXYZ()如下功能:

def checkXYZ():
    if x==1:
        print("x", end='')
    if y==1:
        print('y', end='')
    if z==1:
        print('z', end='')
    print()  # new line

x = 1
y = 0
z = 1
checkXYZ()

xz

endprint()函数的参数指定字符串末尾的最后一个字符。默认情况下,end='\n',但您可以将其设置''为避免换行。

受@Sujay 和@Yu-Sheng Li 启发的替代解决方案

a = b = y = z = 1
c = x = 0
variables = [a,b,c,x,y,z]
strs = "abcxyz"
print(''.join(s for var, s in zip(variables, strs) if var))

阿比兹


实现方法:


def doA():
    pass
def doB():
    pass
def doC():
    pass
def doAB():
    pass
def doAC():
    print("AC")
def doBC():
    pass
def doABC():
    pass
    
dict_ = {'a' : doA, 'b': doB, 'c': doC, 'ab': doAB, 'ac': doAC, 'bc': doBC, 'abc': doABC}
variables = [a,b,c]
strs = "abc"
b = 0
a = c = 1
dict_[''.join(s for var, s in zip(variables, strs) if var)]()

交流电


推荐阅读