python - 用 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()
解决方案
这是一个特定于问题的答案,但您可以实现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
end
给print()
函数的参数指定字符串末尾的最后一个字符。默认情况下,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)]()
交流电
推荐阅读
- ios - 如何通过 config.xml 将 NSPhotoLibraryUsageDescription 添加到 plist 文件中?
- java - ModelMapper JUnit Mockito 抛出 NullPointerException
- elasticsearch - 将分析的文本复制到另一个字段中
- raspberry-pi3 - Raspberry Pi GPIO:硬件时序(例如中断)
- azure - 如何在 Azure Cloud Shell 中安装 Desired State Configuration (DSC)?
- hyperledger-fabric - 我可以在业务网络中使用超级账本作曲家和结构在成员之间分发账本吗
- java - MyBatis 无法在查询中设置参数
- javascript - 我可以创建一个大视频的字节数组的发布请求吗
- xamarin - Xamarin 表单无法更改 Listview SelectedItem 上的图像
- django - 将 Sentry/Raven 与 Django 和 PythonAnywhere 一起使用时,“警告:我们检测到 uwsgi 与禁用线程的使用”