我必须定义一个函数'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
但它没有用。我在某处做错了吗? 请建议我正确的方法......
答案 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
中使用sum
和variadic 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))