我正在编写一个程序来打开和读取一个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行,在main中E = eval(b) + eval(d)TypeError:只能将元组(不是"float")连接到元组
我将字符串转换成数字,使用"eval"将这些数字相乘。我不明白为什么它标记了一个错误。
谢谢你的帮助。看这个信息,我只能看出b
和d
的eval
返回的值是float
和tuple
类型。你不能在float
和tuple
上做+
。例如:
>>> 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
,以查看它引发错误的值。
在我的例子中,我得到了这个错误,因为我错误地删除了一个索引在我的for循环试图枚举。
Before(无错误)for i, item in enumerate(items):
后(错误)for item in enumerate(items):