如何在另一个函数中使用一个函数的乘积-Python

时间:2019-02-27 10:34:06

标签: python function variables methods

我正在尝试创建一种方法,该方法返回加在一起的三个变量的值,并进一步规定,如果其中一个变量为13、14或介于17 -19之间,则该特定变量应最终的总和为0。

我正在尝试定义另一种方法来分别检查每个数字,因此必须在一种方法中写出相同的代码三次。

到目前为止,我的代码如下:

def no_teen_sum(a, b, c):
    fix_teen(a)
    fix_teen(b)
    fix_teen(c)

    return a + b + c


def fix_teen(n):
    if (n == 13 or n == 14) or (n >= 17 and n <= 19):
        n = 0
    return n


print(no_teen_sum(1, 2, 13))

该代码无法获得所需的结果,并且只是将a,b和c加在一起而没有考虑我上面提到的条件。 我以为在整体方法“ no_teen_sum”中调用检查方法“ fix_teen”会解决此问题,但显然它已被Python忽略。

我如何在这里实现我所需要的?

2 个答案:

答案 0 :(得分:4)

这是我修复此功能的想法

def no_teen_sum(a, b, c):
    new_a = fix_teen(a)
    new_b = fix_teen(b)
    new_c = fix_teen(c)

    return new_a + new_b + new_c

但更好的解决方案是:

def no_teen_sum(values_list):
    return sum(fix_teen(v) for v in values_list)

这种方法的优点是您可以传递任意多个值

对于第二个功能,您也可以执行此操作(但仅当n始终为int时):

def fix_teen(n):
    if n in (13, 14, 17, 18, 19):
        n = 0
    return n

答案 1 :(得分:0)

怎么样:

def no_teen_sum(a, b, c):
    return fix_teen(a) + fix_teen(b) + fix_teen(c)


def fix_teen(n):
    return 0 if (n == 13 or n == 14) or (17 <= n <= 19) else n


print(no_teen_sum(1, 2, 13))