python-3.x 我试图解决一个问题在codingbat.com问题名称是“lucky_sum”[关闭]

s8vozzvw  于 2023-05-19  发布在  Python
关注(0)|答案(4)|浏览(66)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

3年前关闭。
Improve this question
给定3个inta b c,返回它们的和。但是,如果其中一个值是13,则它不计入sum,并且其右侧的values不计入。例如,如果b13,则bc都不计数。例如:

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)
gpnt7bae

gpnt7bae1#

您的代码以您的方式修复:

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)
b4wnujal

b4wnujal2#

你返回的是13之后的值。如果你得到13,你应该跳出循环,返回总和。

5sxhfpxr

5sxhfpxr3#

您的解决方案正确地忽略了数字中的13,但您的代码没有遵守第二个要求“...及其右侧的值不计数”。一旦找到13,就尝试将break移出循环。

编辑

顺便说一句,最pythonic的解决方案是这样的:

from itertools import takewhile
def lucky_sum(*args):
    return sum(takewhile(lambda x: x != 13, args))

使用任意数量的参数,并且非常容易理解。

ie3xauqp

ie3xauqp4#

以下是我的答案:

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)

相关问题