python - 编写一个函数,将另一个函数应用于python中的数字列表
问题描述
首先,我必须编写一个 python 函数,使得 f(n) 等于
5,如果 n 可以被 5 整除但不能被 7
整除 7,如果 n 可以被 7 整除但不能被 5
整除 35,如果 n 可以被 7 整除,
否则可以被 5 整除。
我已经这样做了(如下所示)
def f(n):
if n % 5 == 0 and n % 7 != 0:
return 5
elif n % 7 == 0 and n % 5 != 0:
return 7
elif n % 7 == 0 and n % 5 == 0:
return 35
else:
return 0
我现在需要创建另一个函数k(a, b)
,它返回一个由数字 f(a)、f(a+1)、...、f(b) 组成的列表,其中 f 是上面的函数。
例如,k(4, 6) 应该是列表 [f(4), f(5), f(6)],即 [0, 5, 0]
这是我到目前为止所做的。请记住,我需要以这样的方式开始此函数,def k(a,b)
例如,当我调用
print (k(4, 6))
它时,它将返回 [0, 5, 0]
def k(a, b):
output = []
for n in k(a, b):
output.append(f(n))
return output
但我没有得到正确的结果。如果有人可以在最后一部分提供帮助,那就太好了。谢谢
解决方案
您将返回缩进了太多次。它在函数被调用一次后返回,而不是在迭代完成后返回。它应该看起来像这样。
def k(a, b):
output = []
for n in range(a, b):
output.append(f(n))
return output
为了缩短代码,它可以如下所示:
def k(a, b):
output = [f(n) for n in range(a, b)]
return output