我在解释器中乱搞,知道在python中,True == 1
评估为True
,这意味着int(True)
输出1
。
如果我输入float("True")
,解释器将返回:
ValueError: could not convert string to float: 'True'
如果我输入int("True")
,解释器将返回:
ValueError: invalid literal for int() with base 10: 'True'
这是为什么?由于True
和False
分别等于1
和0
,所以不应该有效吗?导致int()
中的ValueError的原因是什么?
答案 0 :(得分:1)
真的是bool类型和 “True”是一种字符串类型
int(True)
Out[2]: 1
float(True)
Out[3]: 1.0
type(True)
Out[4]: bool
答案 1 :(得分:1)
int
和float
函数解析比一般Python语法更受限制的语法。可能是Python表达式True
求值为等于1
的对象,但int
不将字符串解释为Python表达式;它试图将字符串解释为整数的基数10表示。这也是您无法int('2+2')
或int('somefunction()')
。
答案 2 :(得分:0)
这是因为“True”被评估为字符串。因此int(True)
和int("True")
不一样。请尝试type(True)
和type("True")
进行确认。