为什么不在int(" True")和float(" True")在python中工作?

时间:2017-10-12 03:48:43

标签: python

我在解释器中乱搞,知道在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'

这是为什么?由于TrueFalse分别等于10,所以不应该有效吗?导致int()中的ValueError的原因是什么?

3 个答案:

答案 0 :(得分:1)

真的是bool类型和 “True”是一种字符串类型

int(True)
Out[2]: 1

float(True)
Out[3]: 1.0

type(True)
Out[4]: bool

答案 1 :(得分:1)

intfloat函数解析比一般Python语法更受限制的语法。可能是Python表达式True求值为等于1的对象,但int不将字符串解释为Python表达式;它试图将字符串解释为整数的基数10表示。这也是您无法int('2+2')int('somefunction()')

的原因

答案 2 :(得分:0)

这是因为“True”被评估为字符串。因此int(True)int("True")不一样。请尝试type(True)type("True")进行确认。