两个浮点数抛出TypeError:不支持的操作数类型为+:' float'和' str'

时间:2017-03-29 15:09:24

标签: python

我遇到了以下代码行的问题:

underground['distributed_load_C'] = float(ugLineList[21])*1000 + ('+' if float(ugLineList[24]) >= 0.0 else '-') + abs(float(ugLineList[24]))*1000j

从ugLineList中提取的原始值是字符串,我尝试在添加之前键入将它们转换为浮点数。即使我尝试输入它们,我也会收到以下错误:

TypeError: unsupported operand type(s) for +: 'float' and 'str'

我已尝试在此语句之前输入类型,并检查代码段是否真正浮动: print type(float(ugLineList[21])*1000), type(float(ugLineList[24])) ---&GT; <type 'float'> <type 'float'>

我真的很困惑这里发生了什么,所以非常感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:2)

上面的注释(你要添加字符串'+'或' - '取决于ugLineList [24]的值)是完全正确的。假设您打算添加或减去

<<

基于对if语句的评估,您可以执行以下操作:

abs(float(ugLineList[24]))*1000j

希望这会有所帮助

答案 1 :(得分:1)

在尝试进行aritmetic操作时,看起来你有字符串

+ ('+' if float(ugLineList[24]) >= 0.0 else '-')

喜欢'+'

你真的需要这个条件吗? '+' if float(ugLineList[24]) >= 0.0

尝试阉割个体变量并使用它们进行操作,然后将所有变量放在一行

答案 2 :(得分:1)

我不确定你要通过检查值的符号然后执行abs来尝试做什么,但我敢打赌你可以放弃它:

underground['distributed_load_C'] = float(ugLineList[21])*1000 + float(ugLineList[24])*1000j