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

Python求和函数summer_69多6/9场景失效,如何修复for循环?

修正Python的summer_69函数以处理多段6-9区间

你的原代码核心问题在于:每当遇到一个6时,就会从当前位置开始累加直到9并计入containerOf69,但如果列表中出现多个6(比如第一个6-9区间内的第二个6),会重复计算这段区间的数值,导致containerOf69被多次累加,最终total - containerOf69得到错误结果。比如测试案例[1,2,3,6,6,7,9]中,第一次遇到6时containerOf69累加了6+6+7+9=28,第二次遇到第二个6时又累加了6+7+9=22,最终containerOf69=50,而total=34,34-50=-16,这就是错误的根源。

换用开关标记法可以更简洁可靠地解决这个问题,用一个布尔变量标记是否需要跳过当前数字,遍历过程中动态切换标记状态:

def summer_69(arr):
    total = 0
    skip = False  # 标记是否需要跳过当前数字
    for num in arr:
        if skip:
            # 处于跳过状态时,只有遇到9才关闭跳过标记
            if num == 9:
                skip = False
            continue
        # 不处于跳过状态时
        if num == 6:
            # 遇到6,开启跳过标记
            skip = True
        else:
            # 非6的数字,累加到总和
            total += num
    return total

测试验证

  • summer_69([4, 5, 6, 7, 8, 9]) → 4+5=9,符合预期
  • summer_69([1,2,3,6,6,7,9]) →1+2+3=6,符合预期
  • 多区间场景测试:summer_69([6,1,9,2,6,3,9,4]) →2+4=6,结果正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 11:01:59