如果情况不那么混乱

时间:2018-03-03 17:11:09

标签: python python-3.x

我是Python的新手,我想知道是否有更优雅的方式来表达以下条件:

a=0
b=0
c=0
d=0
e=0
f=0

if a!=0 and c!=0 and b==0 and d==0 and e==0 and f==0:
    print("Hello World!")

这是一个简单的玩具示例,但实际上我有超过6个字母,而且事情变得非常混乱。

3 个答案:

答案 0 :(得分:8)

您的情况基本上分为两部分:

  • 某些变量集全部为零
  • 某些变量集都是非零的

然后制作两个列表:

should_be_zero = [b, d, e, f]
should_be_nonzero = [a, c]

然后,您可以重新表达您的条件:

all(i == 0 for i in should_be_zero) and all(i != 0 for i in should_be_nonzero)

如评论中所述,由于我们所说的整数为零/非零,因此上述内容相当于

not any(should_be_zero) and all(should_be_nonzero)

答案 1 :(得分:2)

您可以使用allany

if all((a, c)) and not any((b, d, e, f)):
    print("Hello World!")

如果列出一个或多个数字,all(...)会返回True,如果它们都非零且not any(...)返回True则它们都为零。

答案 2 :(得分:1)

你可以利用0是假的,1是真实的事实:

if a and c and not b and not d and not e and not f:
    print("Hello World!")