浮动错误无法调用

Sta*_*ser 1 python typeerror python-2.7

我有一个程序,根据文本文件中提供的文本进行各种计算.打印第二个条目后出现错误(第一个工作正常.)

文件中的条目被解析为列表:

['Castro, Starlin', 'CHC', '161', '666', '59', '163', '34', '2', '10']
Run Code Online (Sandbox Code Playgroud)

然后我调用单个函数,它有四个参数.

singles = singles(float(line[5]),float(line[6]),float(line[7]),float(line[8]))
print "Singles: %s" % singles
Run Code Online (Sandbox Code Playgroud)

功能如下:

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)
Run Code Online (Sandbox Code Playgroud)

这适用于第一个条目:

['Machado, Manny', 'BAL', '156', '667', '88', '189', '51', '3', '14']
Run Code Online (Sandbox Code Playgroud)

并且计算成功完成.但是,第二个无法完成:

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
Run Code Online (Sandbox Code Playgroud)

jon*_*rpe 7

你打电话的时候

singles = singles(float(line[5]),float(line[6]),float(line[7]),float(line[8]))
Run Code Online (Sandbox Code Playgroud)

您替换函数singlesfloat被调用时由函数返回.任何后续调用都singles将尝试调用该数字,而不是函数,从而失败.为return值使用不同的名称:

new_single = singles(*map(float, line[5:9]))
Run Code Online (Sandbox Code Playgroud)

(注意使用map,切片和解包以简化调用.)