代码之家  ›  专栏  ›  技术社区  ›  Miguel Nunez

Python 3:TypeError:“float”对象不可调用

  •  -2
  • Miguel Nunez  · 技术社区  · 7 年前

    上下文:

    我正在为我的统计学课写一个回归线计算器。要了解输入x和y值的作用,请输入要对数字进行四舍五入的小数点数目,打印x和y的平均值、x和y的标准偏差、r、r平方、b1、b0、回归线方程以及每个x值的预测值和残值。之后,它会询问您是否要向表中添加x和y值,删除表中最后两个x和y值,或在回归线中插入x值。

    问题:

    我要做的是,在向表中添加x和y值或从表中删除最后两个x和y值后,更新回归线、预测值和残值。问题是它可以成功地更新预测值和残值,但每当我尝试更新回归线方程的值时,它会在第219行给我一个错误,即:

    回溯(最近一次呼叫最后一次): 文件“python”,第219行,in TypeError:“float”对象不可调用

    它在第一次运行时起作用,因为我将用户放置的x和y值作为浮点数,但由于它处于while循环中,所以它会再次运行,这就是错误发生的时候。我不知道如何摆脱它。

    链接:

    如果要查看代码并试用该程序,请转到以下链接: https://repl.it/@SomeRandomGuy/SmoggyHoarseBluefish

    代码的相关部分为

    while(True):
        # ...
    
        # Gets the corelation coefficient (r)
        r = r(x, y, meanX, meanY, lenX)  # Raises a TypeError
    
        # ...
    
    1 回复  |  直到 7 年前
        1
  •  2
  •   ndmeiri Someguy    7 年前

    之前 主while循环的第一次迭代 r 指您定义的函数,该函数返回 float .

    在期间 在while循环的第一次迭代中,您调用 r :

    r = r(x, y, meanX, meanY, lenX)
    

    通话结束后,姓名 r 指的是 浮动 函数返回 r .

    第二 迭代while循环,您尝试调用 r 再一次但是 r 不再是函数,而是 浮动 ,不可调用。因此出现了错误。

    您可以通过在while循环中使用变量名来解决此问题,而不是 r 保持相关系数。