https://codingbat.com/prob/p107863
给出3个int值,a,b,c,返回它们的和。但是,如果其中一个值为13,则它不计算在和,而其右边的值不计算在内。例如,如果b是13,那么b和c都不算。
这是我的代码,怎么了?需要帮助
def lucky_sum(a, b, c):
sum = a + b + c
if a == 13:
sum = sum - a - b
if b == 13:
sum = sum - b - c
if c == 13:
sum = sum - c
return sum发布于 2021-12-03 19:03:27
可能有些过分,但如果遇到或继续使用itertools.takewhile,可以继续对除13以外的值进行求和。这将概括为*args类型方法中的任意数量的参数。
from itertools import takewhile
def lucky_sum(a, b, c):
return sum(takewhile(lambda i: i != 13, [a, b, c]))一些例子
>>> lucky_sum(1, 2, 3)
6
>>> lucky_sum(1, 2, 13)
3
>>> lucky_sum(1, 13, 3)
1发布于 2021-12-03 19:02:05
如果其中一个值为13,则不计算之和,其右边的值不计算。
您的代码只处理13右边的即时值,但是规范表明您应该排除它右边的所有值。
def lucky_sum(a, b, c):
sum = a + b + c
if a == 13:
sum = sum - a - b - c
if b == 13:
sum = sum - b - c
if c == 13:
sum = sum - c
return sum但是,如果您可以添加一个任意的数字,这就变得站不住脚了。相反,考虑一些可伸缩的东西:
def lucky_sum(*addends):
sum_ = 0
for n in addends:
if n == 13:
break # stop summing immediately
sum_ += n
return sum_发布于 2022-03-14 15:12:35
可以尝试这样做:
def lucky_sum(a, b, c):
if a==13:
return 0
elif b==13:
return a
elif c==13:
return a+b
else:
return a+b+chttps://stackoverflow.com/questions/70219390
复制相似问题