检查两个值是否为非负值或均为负值

时间:2018-03-06 11:52:47

标签: python python-3.x

给定一对整数值,我需要检查两者是否为非负数或两者都是负数。

琐碎的方式是:

def func(a, b):
    return (a >= 0 and b >= 0) or (a < 0 and b < 0)

但我正在寻找一些东西&#34; neater&#34;,我相信这是可能的,所以我提出了这个:

def func(a, b):
    return (a >= 0) ^ (b >= 0) == 0

然而,这一点对普通读者来说有点模糊&#34;。

有更清洁的方式吗?

谢谢。

2 个答案:

答案 0 :(得分:10)

将它们相乘并对0进行测试:

def func(a, b):
    return a * b >= 0

答案 1 :(得分:2)

这是Python。我们并不是在所有情况下都能以最简洁有效的方式处理事情 - 这是C ++小伙伴的事情。

如果(a >= 0 and b >= 0) or (a < 0 and b < 0)是&#34;足够快&#34;,(如果不是这样会让我感到惊讶),那么坚持下去。它的工作原理非常明显。

对于你的第二个解决方案,或者@ coldspeed,我个人不得不在纸上写下一些东西来弄清楚它在做什么,除非函数名称比{{更好“ 1}}。