我如何更改此代码,以便它可以处理函数

时间:2016-03-30 22:04:43

标签: python function

以下功能需要3个参数(f,a和b)。这里f是函数,a和b是较低的 上限分别为f,f为要求的函数。 #计算从a到b的f之和

def sum(f, a, b):
 total = 0
 for i in range(a, b+1):
 total += f(i)
 return total

问题1.输入上面的代码并计算从1到10和1到100的整数之和 1至1000

3 个答案:

答案 0 :(得分:1)

类似的想法,但使用*=代替+=

def product(f, a, b):
    total = 1
    for i in range(a, b+1):
        total *= f(i)
    return total

例如

def foo(x):
    return x

>>> product(foo, 1, 5)
120

答案 1 :(得分:0)

正如添加0什么都不做,乘以1什么都不做。因此,只需将其作为开头:

def product(f, a, b):
    total = 1
    for i in range(a, b+1):
        total *= f(i)
    return total

答案 2 :(得分:0)

或者使用功能风格,您将获得成功:

def product(f, a, b):
    return reduce(lambda x, y: x*y, [f(n) for n in range(a, b+1)])

使用函数spam

运行它
def spam(x):
    return x

print(product(spam, 1, 3))

>>>6

<强>编辑:

W / o f param看起来会是:

def product(a, b):
    return reduce(lambda x, y: x*y, [n for n in range(a, b+1)])
print(product(1, 5))