我正在尝试学习 Python,并且终其一生都无法弄清楚为什么会这样:
i = raw_input("enter a number")
if int(i):
print "yes"
else:
print "false"
如果 i == "0" 则不会返回 true
背景:我正在尝试实施联合查找算法。一切正常,但是当我尝试连接两个点并且一个为 0 时,它不会让我通过控件。(Python 2.7)
我正在尝试学习 Python,并且终其一生都无法弄清楚为什么会这样:
i = raw_input("enter a number")
if int(i):
print "yes"
else:
print "false"
如果 i == "0" 则不会返回 true
背景:我正在尝试实施联合查找算法。一切正常,但是当我尝试连接两个点并且一个为 0 时,它不会让我通过控件。(Python 2.7)
Python 类型具有布尔值,在特殊方法中定义。特别是 , , , 0
(None
和任何其他空序列)是错误的。False
""
明显地,
>>> int("0")
0
更重要的是,对于大多数用途来说, 的值为False
0,而 的值为True
1(除了它们作为字符串的表示,以及它们的type
,即bool
):
>>> 0 == False
True
我想你的意思是i.isdigit()
而不是int(i)
.
因为0
是假的,就像None
, []
, {}
and False
(以及更多的对象)一样。它不是明确为假的,但它False
在用作条件时进行评估。
如果要检查这i
是一个数字,假设它是一个数字:
try:
n = int(i)
print "That's a number"
except ValueError:
print "That's not a number"