首页 > 解决方案 > 我在哪里错了 Codingbat Python 练习?

问题描述

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

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)

标签: python

解决方案


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

推荐阅读