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个变量。 或者有没有更好的方法,我没有看到可以在这样的情况下使用?谢谢你的回答!
答案 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