【发布时间】:2014-09-07 13:09:07
【问题描述】:
我一直在学习高阶函数,并想编写一个函数,将函数应用于数字的阶梯范围。 在这种情况下,它应该返回 0 到 100 之间的每一个平方根的总和。
def sum(lower, upper, step = 1, func = lambda *x: x):
return reduce(func, range(lower, upper + 1, step))
sum(0, 100, 2, math.sqrt)
TypeError: sqrt() takes exactly one argument (2 given)
不胜感激!
【问题讨论】:
-
您的问题被否决了;为了改进它,我建议:1)你不应该命名一个函数 sum,因为它是一个内置函数 2)你应该阅读关于 reduce 做什么的手册(提示:很确定 Brionius 也需要这样做,如果在他的答案是使用您的 sum 版本而不是内置版本)
-
对不起命名!看来我对reduce函数的理解有误,谢谢。我相信我包含了所需的行为,有什么我可以添加到潜在的未来问题的吗?