【发布时间】:2017-10-28 05:59:25
【问题描述】:
我正在尝试编写一个函数,它接受一个列表并对列表中的所有数字求和,除了它忽略列表中以列表开头并扩展到 7 的部分,但在 7 之后继续求和。这里是我的代码:
def sum67(nums):
i = 0
sum = 0
while i < len(nums):
k = 0
if nums[i] != 0:
sum += nums[i]
i += 1
if nums[i] == 6:
for j in range(i + 1, len(nums)):
if nums[j] != 7:
k += 1
if nums[j] == 7:
k += 2
i += k
测试用例显示 6 和直到 7 的数字被忽略,而其他数字被添加到总和中,并且 7 之后的数字也被添加到总和中(如预期的那样),但由于某种原因,任何 7在第一个 7 之后 6 没有相加 - 这不是我想要的,我不确定为什么会这样。有什么建议吗?
测试用例结果:
[1, 2, 2 Expected: 5. My result: 5 (OK)
[1, 2, 2, 6, 99, 99, 7] Expected: 5. My result: 5 (OK)
[1, 1, 6, 7, 2] Expected: 4 My result: 4 (Chill)
[1, 6, 2, 2, 7, 1, 6, 99, 99, 7] Expected: 2 My result: 1 (Not chill)
[1, 6, 2, 6, 2, 7, 1, 6, 99, 99, 7] Expected: 2 My result: 1 (Not chill)
[2, 7, 6, 2, 6, 7, 2, 7] Expected: 18 My result: 9 (Not chill)
`
【问题讨论】: