我努力学习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)
我努力学习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)
Python类型具有布尔值,定义为special methods。特别是0
,None
,False
,""
(和任何其他空序列)都是错误的。
显然,
>>> int("0")
0
更重要的是,中False
值为0,而True
值1,在大多数情况(除了其作为字符串表示,他们type
,这是bool
) :
>>> 0 == False
True
谢谢。虽然duskast有正确的方法来解决手头的问题,但你回答了这个问题。 –
因为0
是falsy,就像None
,[]
,{}
和False
(一nd更多的对象)。它不是明确的错误,但在用作条件时它的计算结果为False
。
如果你想检查i
是一个数字,认为它是一个数字:
try:
n = int(i)
print "That's a number"
except ValueError:
print "That's not a number"
我认为你的意思i.isdigit()
,而不是int(i)
。
是的,我的思考过程是:如果可以将您转换为int,那么我们继续前进。但是因为Elazar的回答,我现在知道为什么这是错误的方法。 –
阅读[this](http://docs.python.org/release/2.5.2/lib/truth.html) –
当你“尝试连接两个点”时你究竟检查了什么? – Elazar
我正在构建联盟查找算法 –