将总和中的数字替换为零

时间:2015-07-30 06:31:13

标签: python

我必须定义一个函数'func(a, b, c)',其中有3个变量来计算它们的总和。我必须检查值是否大于'13',然后数字变为'0',例如。

'def func(3,4,14)' ---> 7(3 + 4 + 0)

我已经尝试过以下代码:

def no_teen_sum(a, b, c):
  if(a>13):
      a=0
  elif(b>13):
      b=0
  elif(c>13):
      c=0
  return a+b+c   

但它没有用。我在某处做错了吗? 请建议我正确的方法......

2 个答案:

答案 0 :(得分:12)

您的问题是使用elif。您想使用if

def no_teen_sum(a, b, c):
    if a > 13:
        a = 0
    if b > 13:
        b = 0
    if c > 13:
        c = 0
    return a + b + c

要创建常规功能,您可以在*args中使用sumvariadic function

def no_teen_sum(*args):
    return sum(arg if arg < 13 else  0 for arg in args)

示例:

>>>no_teen_sum(1, 2, 14)
3

答案 1 :(得分:5)

使用sum的版本:

def no_teen_sum(a, b, c):
    return sum( i if i <= 13 else 0 for i in (a, b, c))

print(no_teen_sum(1, 2, 3), no_teen_sum(1, 2, 13), no_teen_sum(11, 12, 13))

输出:

6 16 36
如果您必须以这种方式添加超过3个值,则可以轻松调整

def no_teen_sum(lst):
    return sum( i if i <= 13 else 0 for i in *lst)

print(no_teen_sum(11, 12, 13, 14, 15))