我有一个程序根据文本文件中提供的文本进行各种计算。打印第二个条目后出现错误(第一个工作正常。)
文件中的条目被解析为列表:
['Castro, Starlin', 'CHC', '161', '666', '59', '163', '34', '2', '10']
然后我调用单个函数,它有四个参数。
singles = singles(float(line[5]),float(line[6]),float(line[7]),float(line[8]))
print "Singles: %s" % singles
功能如下:
def singles(a,b,c,d):
# a = hits b = doubles c = triples d = homeruns
# hits - (doubles + triples + homeruns)
tmp1 = b + c + d
return a - float(tmp1)
这适用于第一个条目:
['Machado, Manny', 'BAL', '156', '667', '88', '189', '51', '3', '14']
并且计算成功完成。但是,第二个无法完成:
Traceback (most recent call last):
File "\\bhmfp\ian.carroll$\Intro to Computer Programming\Project 3\Project 3\main.py", line 107, in <module>
singles = singles(float(line[5]),float(line[6]),float(line[7]),float(line[8]))
TypeError: 'float' object is not callable
答案 0 :(得分:7)
致电时
singles = singles(float(line[5]),float(line[6]),float(line[7]),float(line[8]))
将函数singles
替换为该函数在调用时返回的float
。对[{1}}的任何后续调用都会尝试调用该号码,而不是函数,因此会失败。为singles
值使用其他名称:
return
(注意使用new_single = singles(*map(float, line[5:9]))
,切片和解包以简化调用。)