How to write function with variable from the outside?

早过忘川 提交于 2019-11-29 11:21:19

You are being asked to return a function but you are returning the calculated value:

def general_poly(L):
    """ 
    L, a list of numbers (n0, n1, n2, ... nk)
    Returns a function, which when applied to a value x, returns the value 
    n0 * x^k + n1 * x^(k-1) + ... nk * x^0 
    """
    def inner(x):
        res = 0
        n = len(L)-1
        for e in range(len(L)):
            res += L[e]*x**n
            n -= 1
        return res
    return inner

Now general_poly(L)(10) will do what you expect but it is probably more useful if you assign it to a value, so it can be called it multiple times, e.g.:

L = [...]
fn = general_poly(L)
print(fn(10))
print(fn(3))

You could also rewrite inner to:

def general_poly(L):
    return lambda x: sum(e*x**n for n, e in enumerate(reversed(L)))
def general_poly (L):
    """ L, a list of numbers (n0, n1, n2, ... nk)
    Returns a function, which when applied to a value x, returns the value 
    n0 * x^k + n1 * x^(k-1) + ... nk * x^0 """

    def inner(x):
        L.reverse()
        return sum(e*x**L.index(e) for e in L)
    return inner
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!