【发布时间】:2015-06-29 16:47:17
【问题描述】:
def logical_xor(a, b): # for example, -1 and 1
print (a < 0) # evaluates to True
print (b < 0) # evaluates to False
print (a < 0 != b < 0) # EVALUATES TO FALSE! why??? it's True != False
return (a < 0 != b < 0) # returns False when it should return True
print ( logical_xor(-1, 1) ) # returns FALSE!
# now for clarification
print ( True != False) # PRINTS TRUE!
有人可以解释发生了什么吗?我正在尝试制作一个衬里:
lambda a, b: (a < 0 != b < 0)
【问题讨论】:
-
这里有一个教训:使用括号。或者,或者,使用
print (a*b < 0)。 -
return math.copysign(1, a) != math.copysign(1, b) -
print ( True != False) # PRINTS TRUE!你为什么这么惊讶?真不等于假是真。 -
@mikeTheLiar:OP 对此不感到惊讶;这是他最初期望的行为。
-
请不要通过破坏您的帖子为他人增加工作量。通过在 Stack Exchange (SE) 网络上发帖,您已根据 CC BY-SA license 授予 SE 分发内容的不可撤销权利(即无论您未来的选择如何)。根据 SE 政策,分发非破坏版本。因此,任何破坏行为都将被撤销。请参阅:How does deleting work? …。如果允许删除,则帖子下方左侧有一个“删除”按钮,但仅在浏览器中,而不是移动应用程序中。
标签: python python-3.x return logical-operators