我正在尝试创建一种方法,该方法返回加在一起的三个变量的值,并进一步规定,如果其中一个变量为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忽略。
我如何在这里实现我所需要的?
答案 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))