给出3个int
值a b c
,返回它们的总和。但是,如果其中一个值为13
,则它不计入sum
,并且其右边的values
不计。因此,例如,如果b
为13
,则b
和c
均不计算在内。例如:
lucky_sum(1, 2, 3) → 6
lucky_sum(1, 2, 13) → 3
lucky_sum(1, 13, 3) → 1
lucky_sum(1, 13, 13) → 1
以下是我的解决方案。我不明白我的代码有什么问题。
def lucky_sum(a, b, c):
list1 = [a, b, c]
list2 = []
for x in list1:
if x is not 13:
list2.append(x)
return sum(list2)
答案 0 :(得分:1)
您要返回13之后的值。如果您达到13,则应该跳出循环并返回总和。
答案 1 :(得分:1)
您的解决方案正确地忽略了数字中的13,但是您的代码未遵守第二个要求“ ...及其右边的值不计数”。一旦找到一个13,就尝试break
跳出循环。
修改
顺便说一句,最pythonic的解决方案是这样的:
from itertools import takewhile
def lucky_sum(*args):
return sum(takewhile(lambda x: x != 13, args))
可以使用任意数量的参数,而且非常容易理解。
答案 2 :(得分:1)
您以自己的方式修正的代码:
def lucky_sum(a, b, c):
list1 = [a, b, c]
list2 = []
for x in list1:
if x is not 13:
list2.append(x)
else:
break
return sum(list2)
答案 3 :(得分:1)
def lucky_sum(a, b, c):
total = a, b, c
new_list= []
for i in total:
if i == 13:
break
else:
new_list.append(i)
return sum(new_list)