Python为什么int(“0”)返回false

时间:2013-05-28 01:41:16

标签: python validation int string-conversion

我正在努力学习Python,并且在其生命周期中,不能弄清楚,为什么会这样:

i = raw_input("enter a number")

if int(i):
    print "yes"
else:
    print "false"
如果i ==“0”

将不会返回true

背景: 我正在尝试实现Union-Find算法。一切正常,但是当我尝试连接两个点而一个是0时,它不会让我通过控制。 (Python 2.7)

3 个答案:

答案 0 :(得分:5)

Python类型具有布尔值,在special methods中定义。特别是,0NoneFalse""(以及任何其他空序列)都是错误的。

显然,

>>> int("0")
0

此外,对于大多数用途,False的值为0,True的值为1(除了表示为字符串,以及它们的type,这是bool):

>>> 0 == False
True

答案 1 :(得分:3)

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

答案 2 :(得分:2)

因为0是假的,就像None[]{}False(还有更多的对象)一样。它并非明确错误,但在用作条件时评估为False

如果您想检查i是否为数字,请假设它是一个数字:

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