You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CodingBat sum67函数通过示例测试但未通过其他测试求排查

分析你的sum67代码问题

你的代码思路方向是对的,但有几个关键逻辑漏洞,导致它无法通过所有测试用例:

问题1:遍历数组时修改原数组,导致迭代混乱

你在for num in nums循环里直接用del nums[ind_six:ind_seven+1]修改原数组,这会让数组的长度和元素索引在循环过程中发生变化。比如原数组是[1,6,2,7,6,3,7],当你删除第一个6-7区间后,数组变成[1,6,3,7],但循环此时还在遍历原数组的后续元素,会跳过新数组中的部分元素,导致第二个6-7区间没有被处理。

问题2:nums.index(6)只会返回第一个匹配的索引

当数组中有多个6的时候,nums.index(6)每次都只会找到第一个出现的6,而不是当前循环到的那个6。比如数组[6,1,7,6,2,7],第一次处理完第一个6-7后,数组变成[6,2,7],但此时循环继续,nums.index(6)还是指向新数组的第一个元素,但循环的迭代位置已经不对了,可能会重复处理或者漏处理。

更可靠的解决方案:用标记变量追踪是否需要跳过元素

不需要修改原数组,我们可以用一个布尔变量来标记当前是否处于「需要跳过」的状态(也就是遇到6之后,直到遇到7之前的区间)。具体逻辑如下:

  • 初始化total = 0和skip = False
  • 遍历数组中的每个元素:
    • 如果当前元素是6:设置skip = True,不加入总和
    • 如果当前元素是7且skip为True:设置skip = False,不加入总和
    • 如果skip为False:将当前元素加入总和

修正后的代码:

def sum67(nums):
    total = 0
    skip = False
    for num in nums:
        if num == 6:
            skip = True
        elif num == 7 and skip:
            skip = False
        elif not skip:
            total += num
    return total

测试关键用例验证

  • 测试sum67([6, 7, 6, 7, 1]):正确返回1
  • 测试sum67([1, 6, 2, 7, 6, 3, 7, 4]):正确返回1+4=5
  • 测试空数组:返回0,符合题目要求

这个方案不会修改原数组,遍历过程稳定,能正确处理所有嵌套或连续的6-7区间。

内容的提问来源于stack exchange,提问作者Dan Schumacher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 17:40:17