CodingBat Python:List - 2,sum13

问题描述 投票:-1回答:3

我无法弄清楚为什么我的代码无效。问题是:

返回数组中数字的总和,返回0表示空数组。除了数字13是非常不吉利的,因此它不计算在13之后立即出现的数字也不计算。

sum13([1,2,2,1])→6

sum13([1,1])→2

sum13([1,2,2,1,13])→6

我的答案:

def sum13(nums):
    count = sum(nums)
    for i in range(len(nums)):
        if nums[i] == 13:
            count = count - 13 
            count = count - nums[i+1]
    return count
python list syntax
3个回答
0
投票
def sum13(nums):
count = sum(nums)
for i in range(len(nums)):
    if nums[i] == 13:
        # count = count - 13 
        # count = count - nums[i+1]
        #print(nums[:i])
        count = sum(nums[:i])
return count

0
投票

删除有问题的元素,然后总结剩下的内容。使用生成器使这非常简单

def remove_13(l):
    it = iter(l)
    for x in it:
        if x == 13:
            try:
                next(it)
            except StopIteration:
                return
        else:
            yield x

def sum13(l):
    return sum(remove_13(l))

0
投票
def sum13(nums):

    if 13 in nums:
        try:
            nums.append(0)
            for i in range(len(nums)):

                if nums[i] == 13:
                    nums.remove(nums[i])
                    nums.remove(nums[i])
                    return sum13(nums)
        except:
            return sum(nums)   
        return sum(nums)


    return sum(nums)
© www.soinside.com 2019 - 2024. All rights reserved.