类型错误:只能将元组(而不是“浮点数”)与元组连接。

3
我正在编写一个程序,用于打开和读取txt文件,并逐行循环遍历。将第二列和第四列中的值相乘,并赋值给第五列。
A 500.00 A 84.15  ?

B 648.80 B 77.61  ?

C 342.23 B 39.00  ?

这是我编写的一部分代码:

for line in infile:
    a,b,c,d = line.split()
    e = eval(b) + eval(d)

    print("{0:20}${1:20}{2:20}${3:20}{4:20}".format(a,b,c,d,e),file=outfile)

我一直收到一个错误信息,错误信息如下:

文件"C:/Users/hee lim/Desktop/readfile2.py",第19行,在主程序中 e = eval(b) + eval(d) TypeError: can only concatenate tuple (not "float") to tuple

我使用"eval"将字符串转换为数字以便于对这些数字进行乘法运算。 我不明白为什么会出现错误。

谢谢您的帮助。


请将你的完整代码分页。 - Tilak Madichetti
@TilakMadichetti 我相信你的意思是“粘贴”。 - Christian Dean
2个回答

5

从这些信息来看,我只能看出bdeval返回值是floattuple类型。而且你不能对floattuple执行+操作。例如:

>>> 5.0 + (2 ,3)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'float' and 'tuple'

调试时,在for循环的开头添加print line以查看它在哪个值上出错。


非常感谢!当我使用您的代码进行调试时,我发现我的原始文本文件中有一个错别字“1,400.00”,Python 将其识别为元组。 - heej

0
在我的情况下,我遇到了这个错误,因为我错误地删除了一个索引,试图枚举我的for循环。
之前(没有错误) for i, item in enumerate(items): 之后(有错误) for item in enumerate(items):

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接