2013-05-28 114 views
1

我努力学习Python和可以为它的生活,想不通,为什么这个:的Python为什么INT(“0”)返回false

i = raw_input("enter a number") 

if int(i): 
    print "yes" 
else: 
    print "false" 

如果我不会返回true = =“0”

背景: 我想实现联合查找算法。一切工作正常,但当我尝试连接两个点,一个是0它不会让我通过控制。 (Python 2.7)

+2

阅读[this](http://docs.python.org/release/2.5.2/lib/truth.html) –

+0

当你“尝试连接两个点”时你究竟检查了什么? – Elazar

+0

我正在构建联盟查找算法 –

回答

4

Python类型具有布尔值,定义为special methods。特别是0,None,False,""(和任何其他空序列)都是错误的。

显然,

>>> int("0") 
0 

更重要的是,中False值为0,而True值1,在大多数情况(除了其作为字符串表示,他们type,这是bool) :

>>> 0 == False 
True 
+0

谢谢。虽然duskast有正确的方法来解决手头的问题,但你回答了这个问题。 –

2

因为0是falsy,就像None[]{}False(一nd更多的对象)。它不是明确的错误,但在用作条件时它的计算结果为False

如果你想检查i是一个数字,认为它是一个数字:

try: 
    n = int(i) 
    print "That's a number" 
except ValueError: 
    print "That's not a number" 
3

我认为你的意思i.isdigit(),而不是int(i)

+0

是的,我的思考过程是:如果可以将您转换为int,那么我们继续前进。但是因为Elazar的回答,我现在知道为什么这是错误的方法。 –