首页 > 解决方案 > 编写一个函数,将另一个函数应用于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

但我没有得到正确的结果。如果有人可以在最后一部分提供帮助,那就太好了。谢谢

标签: pythonlistfunction

解决方案


您将返回缩进了太多次。它在函数被调用一次后返回,而不是在迭代完成后返回。它应该看起来像这样。

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

推荐阅读