在python 2.6.6中,为什么整数-1大于0

时间:2015-02-11 11:58:42

标签: python

我很困惑为什么-1大于0。 这是我的测试程序

> cat logtest.py
def myfunc():
    if -1 > 0:
        return False
    else:
        return True

if myfunc():
    print "True"
else:
    print "False"
> python -V
Python 2.6.6
> python logtest.py
True

如果我在翻译中这样做,我会得到不同的结果:

Python 2.6.6 (r266:84292, Apr 11 2011, 15:50:32)
[GCC 4.4.4 20100726 (Red Hat 4.4.4-13)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if -1 > 0:
...  print "Whoa!"
... else:
...  print "unWhoa!"
...
unWhoa!

谢谢!

2 个答案:

答案 0 :(得分:1)

False为True时,您将返回-1 > 0,反之亦然:

 >>> if -1 > 0:
...     print 'True, the universe is indeed upside down!'
... else:
...     print 'False, order has been restored'
... 
False, order has been restored

但你这样做:

if -1 > 0:
    return False
else:
    return True

所以你基本上是这样做的:

>>> not -1 > 0
True

反转测试结果,当测试结果为真时返回False,当测试结果为false时返回True,但您的控制台测试不匹配那个逻辑。在那里你只看了测试结果本身。

您的错误源于在执行生成布尔值的表达式后显式返回布尔值。这很容易出错,而你不需要这样做。只需返回表达本身

def myfunc():
    return -1 > 0

print myfunc()

答案 1 :(得分:0)

您的代码运行正常。你似乎只是误解了逻辑。 -1 > 0评估为False,因此如果提供,我们希望输入else块。

if -1 > 0:
    print "-1 IS greater than 0"
else:
    print "-1 IS NOT greater than 0"

# -1 IS NOT greater than 0

试试这个更简单的例子:

print -1 > 0
# False