我正在努力学习Python,并且在其生命周期中,不能弄清楚,为什么会这样:
i = raw_input("enter a number")
if int(i):
print "yes"
else:
print "false"
如果i ==“0”,将不会返回true
背景: 我正在尝试实现Union-Find算法。一切正常,但是当我尝试连接两个点而一个是0时,它不会让我通过控制。 (Python 2.7)
答案 0 :(得分:5)
Python类型具有布尔值,在special methods中定义。特别是,0
,None
,False
,""
(以及任何其他空序列)都是错误的。
显然,
>>> 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"