Python 为什么 int("0") 返回 false

问题描述 投票:0回答:4

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

i = raw_input("enter a number")

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

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

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

python validation int string-conversion
4个回答
5
投票

Python 类型具有布尔值,在特殊方法中定义。特别是,

0
None
False
""
(以及任何其他空序列)都是 false。

显然,

>>> int("0")
0

此外,对于大多数用途,

False
的值为 0,
True
的值为 1(除了它们表示为字符串,以及它们的
type
,即
bool
):

>>> 0 == False
True

4
投票

我认为您的意思是

i.isdigit()
而不是
int(i)


2
投票

因为

0
是假的,就像
None
[]
{}
False
(以及其他一些对象)一样。它并不是明确错误,但当用作条件时,其计算结果为
False

如果你想检查

i
是否是一个数字,假设它是一个数字:

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

0
投票
i = input("enter a number: ")

if int(i) == 0:
    print("yes")
else:
    print("false")
© www.soinside.com 2019 - 2024. All rights reserved.