我很困惑为什么-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!
谢谢!
答案 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