2014-09-28 68 views
0

我想通过函数sqrt(a)找到一个数的平方根。 fixedPoint(f,epsilon)是一个辅助函数。问题是我得到这个TypeError:'浮动'对象不可调用。我是编程新手,所以如果任何人都可以帮助和发现是错误,并解释这个错误是什么意思?为什么有这种TypeError?

def fixedPoint(f, epsilon): 
    """ 
    f: a function of one argument that returns a float 
    epsilon: a small float 

    returns the best guess when that guess is less than epsilon 
    away from f(guess) or after 100 trials, whichever comes first. 
    """ 
    guess = 1.0 
    for i in range(100): 
     if abs(f(guess) - guess) < epsilon: 
      return guess 
     else: 
      guess = f(guess) 
    return guess 


def sqrt(a): 
    def tryit(x): 
     return 0.5 * (a/x + x) 
    return fixedPoint(tryit(a), 0.0001) 
+0

您正将'tryit' *的返回值作为参数传递给'fixedPoint',**而不是**函数本身。 – jonrsharpe 2014-09-28 12:07:23

+0

'tryit'返回一个浮点数,然后'f'是一个浮点数,'f(guess)'导致错误。 – Maroun 2014-09-28 12:07:44

回答

4

sqrt功能,代码经过tryit的返回值(这是一个浮点值),而不是tryit本身。

传递函数本身将解决问题。

def sqrt(a): 
    def tryit(x): 
     return 0.5 * (a/x + x) 
    return fixedPoint(tryit, 0.0001)