多个if条件

时间:2014-02-16 23:16:35

标签: python if-statement

你能告诉我为什么这段代码:

if (x and y) and z > 0:
    return True

与:

不同
if (x and y) > 0 < z:
    return True

基本上,为什么我不能链接几个变量,如:

if var1 and var2 and var3 and var4 > 0:
    do_this

我做错了什么?

- 编辑 - 我想我只想知道如何在不写作的情况下缩短条件:

if var1 > 0 and var2 > 0 and var3 > 0

特别是如果条件很长,如:

if var1 > (pow(x, 3) / 2.5*pow(y,0.5)+x*y)

如果重写每个变量的条件是不可行的,想象一下我是否有10个变量。 或者有没有更好的方法,我没有看到可以在这样的情况下使用?谢谢你的回答!

1 个答案:

答案 0 :(得分:5)

这不是你想象的那样:

if (x and y) > 0 < z: return True

上面首先评估(x and y),如果两者都是真实的,则返回y,所以现在我们有:

if y > 0 < z: return True

与以下内容相同:

if y > 0 and 0 < z

显然,上述内容与其他表达方式不同:

if (x and y) and z > 0: return True
if y and z > 0:
if z > 0:

底线:(x and y) > 0 绝对不是做你想象的事情!你想说的必须写成这样:

 if x > 0 and y > 0 and z > 0: return True