我试图理解为什么我会从以下if
中得到不合理的结果:
def print_if_neg (a,b):
if a < 0 != b < 0:
print "Only One Neg"
else:
print "0 or 2"
print_if_neg(1,1)
print_if_neg(-1,1)
print_if_neg (1,-1)
print_if_neg(-1,-1)
我得到3次0 or 2
,然后最后一次Only One Neg
。
这种复杂情况的顺序是什么
我试过这个:
if (a < 0) != (b < 0):
没关系,但我正在努力理解为什么上面的方法不起作用
这是因为条件
a < 0 != b < 0
首先意味着a < 0
和0 != b
和b < 0
,当a >= 0
第一个条件的计算结果为False时,其他条件都不会被计算。那么,如果a是<;0但b=1链中的最后一个条件为False。因此,你的链式条件是错误的4次中的3次这在Python文档的section 6.10中有很好的解释
正如CoryKramer所指出的,操作符的优先级起着决定性的作用
您的代码等效于:
因为根据语言定义,
!=
比<
具有更高的优先级因此,使用
()
强制您需要的优先级:另外,仅供参考,您正在对^{} operator 进行编码
由于operator precedence,您需要括号
相关问题 更多 >
编程相关推荐