初学中,题目来自【廖雪峰的官方网站-map/reduce】
刚开始自己写了好几遍,能得出结果945,但是测试代码显示失败,原因是函数返回的是空值NONE。
prod这个函数只有一个参数,最初我将其改为x,y2个参数,能得出结果,却无法通过测试代码。后来看到有人写的代码是函数内嵌函数,测试成功,明白了可以通过变通将一个属性作用到另一个属性。
def prod(a):
def m(x,y):
return x*y
return reduce(m,a)
print(prod([3,5,7,9]))
然后学习lambda函数,比较简洁,比较符合python。
from functools import reduce
def prod(l):
return reduce(lambda x,y:x * y,l)
测试代码:
print('3 * 5 * 7 * 9 =', prod([3, 5, 7, 9]))
if prod([3, 5, 7, 9]) == 945:
print('测试成功!')
else:
print('测试失败!')