2

我正在尝试学习 Python,并且终其一生都无法弄清楚为什么会这样:

i = raw_input("enter a number")

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

如果 i == "0" 则不会返回 true

背景:我正在尝试实施联合查找算法。一切正常,但是当我尝试连接两个点并且一个为 0 时,它不会让我通过控件。(Python 2.7)

4

3 回答 3

5

Python 类型具有布尔值,在特殊方法中定义。特别是 , , , 0None和任何其他空序列)是错误的。False""

明显地,

>>> int("0")
0

更重要的是,对于大多数用途来说, 的值为False0,而 的值为True1(除了它们作为字符串的表示,以及它们的type,即bool):

>>> 0 == False
True
于 2013-05-28T01:42:57.290 回答
4

我想你的意思是i.isdigit()而不是int(i).

于 2013-05-28T01:44:00.980 回答
2

因为0是假的,就像None, [], {}and False(以及更多的对象)一样。它不是明确为假的,但它False在用作条件时进行评估。

如果要检查这i是一个数字,假设它是一个数字:

try:
    n = int(i)
    print "That's a number"
except ValueError:
    print "That's not a number"
于 2013-05-28T01:43:32.080 回答