我正在尝试学习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
、""
(以及任何其他空序列)都是 false。
显然,
>>> int("0")
0
此外,对于大多数用途,
False
的值为 0,True
的值为 1(除了它们表示为字符串,以及它们的 type
,即 bool
):
>>> 0 == False
True
我认为您的意思是
i.isdigit()
而不是 int(i)
。
因为
0
是假的,就像 None
、[]
、{}
和 False
(以及其他一些对象)一样。它并不是明确错误,但当用作条件时,其计算结果为 False
。
如果你想检查
i
是否是一个数字,假设它是一个数字:
try:
n = int(i)
print "That's a number"
except ValueError:
print "That's not a number"
i = input("enter a number: ")
if int(i) == 0:
print("yes")
else:
print("false")