首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我哪里错了Codingbat Python练习?

我哪里错了Codingbat Python练习?
EN

Stack Overflow用户
提问于 2018-07-24 05:33:29
回答 2查看 135关注 0票数 -3

返回数组中数字的总和,但忽略从6开始并延伸到下一个7的数字部分(每6后面将至少跟一个7)。如果没有数字,则返回0。

代码语言:javascript
复制
def sum67(nums):
  for i in range(len(nums)):
   if nums[i] == 6:
  nums[i] = 0
  for j in range(len(nums)): 
    if nums[j] == 7:
      nums[j] =0
      nums[i:j+1] = 0
  return sum(nums)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-24 05:53:21

代码语言:javascript
复制
def sum67(nums):
    result = 0
    skip = False
    for num in nums:
        if not skip:
            if num == 6:
                skip = True
            else:
                result += num
        elif skip and num == 7:
            skip = False
    return result


if __name__ == '__main__':
    assert sum67([1, 2, 2]) == 5
    assert sum67([1, 2, 2, 6, 99, 99, 7]) == 5
    assert sum67([1, 1, 6, 7, 2]) == 4
    assert sum67([1, 6, 2, 2, 7, 1, 6, 99, 99, 7]) == 2
    assert sum67([1, 6, 2, 6, 2, 7, 1, 6, 99, 99, 7]) == 2
    assert sum67([2, 7, 6, 2, 6, 7, 2, 7]) == 18
    assert sum67([2, 7, 6, 2, 6, 2, 7]) == 9
    assert sum67([1, 6, 7, 7]) == 8
    assert sum67([6, 7, 1, 6, 7, 7]) == 8
    assert sum67([6, 8, 1, 6, 7]) == 0
    assert sum67([]) == 0
    assert sum67([6, 7, 11]) == 11
    assert sum67([11, 6, 7, 11]) == 22
    assert sum67([2, 2, 6, 7, 7]) == 11
票数 1
EN

Stack Overflow用户

发布于 2019-08-07 03:05:47

我刚开始学编程。这是我是如何解决你分享的问题的。

代码语言:javascript
复制
def sum67(nums):
    sum = 0
    pos6 = []
    pos7 = []

    if len(nums) == 0:
        return 0
    elif len(nums) == 1:
        return nums[0]
    else:
        # first identifying the positions of 6s and 7s in the array "nums"
        for i in range(len(nums)):
            if nums[i] == 6:
                pos6 = pos6 + [i]

        for i in range(len(nums)):
            if nums[i] == 7:
                pos7 = pos7 + [i]

        # ignoring the 7s that appears before the 1st 6 (To be added to final sum)
        if len(pos6) > 0:
            for i in range(len(pos7)):
                if pos6[0] > pos7[0]:
                    pos7 = pos7[1:]

            # ignoring the 7s that are not pairable with any 6
            if len(pos7) > len(pos6):
                pos7 = pos7[:len(pos6)]

            # replacing every digit between 6 and 7 (including 6 & 7) with 0
            for i in range(len(pos6)):
                var1 = 0
                while var1 <= (pos7[i]-pos6[i]):
                    nums[pos6[i] + var1] = 0
                    var1 += 1

        # adding all the values within the array
        for i in range(len(nums)):
            sum = sum + nums[i]

        return sum
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51487493

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档