2017-10-12 111 views
-1

我在翻译知道在python中搞乱了,True == 1评估为True,这意味着int(True)输出1为什么int(“True”)和float(“True”)在Python中不起作用?

如果我输入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?

+0

删除引号并尝试 –

+3

“True”是一个字符串,与True不同。给int(True)一个尝试。 – newacc2240

+0

在'int'或'float'里面可能会有一些类型检测条件,如果类型是布尔类型,它可以将'True'转换为'1'或'False'转换为'0'。如果类型是字符串,则它将该字符串解释为实际数字的表示,例如, ''5“'或'”2.6“',如果它不能这样做,那么会引发错误。对字符串'“True”没有特殊的处理,对于转换为int或浮点数不是''Floccinaucinihilipilification''' –

回答

0

intfloat函数解析比一般Python语法更严格的语法。 Python表达式True可能是一个等于1的对象,但int不会将字符串解释为Python表达式;它试图将字符串解释为一个整数的基10表示。这也是为什么你不能做int('2+2')int('somefunction()')

+0

谢谢!这正是我正在寻找的答案。我甚至没有想过尝试'int(2 + 2)'或者尝试其他情况 –

0

真是布尔类型和 “真”的字符串型

int(True) 
Out[2]: 1 

float(True) 
Out[3]: 1.0 

type(True) 
Out[4]: bool 
0

的。这是因为“真”作为字符串进行评价。所以int(True)int("True")是不一样的。尝试type(True)type("True")以确认。

+0

这是有道理的。我猜它对我来说破坏的地方是'True == 1',我认为这意味着'int(“True”)== int(“1”)',即使'True'是一个布尔值。谢谢! –

相关问题