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

带特殊规则的数字列表求和问题:排除指定区间数字

解决多组6和9区间的列表求和问题

需求说明

  • 对数字列表求和,必须排除6、9以及二者之间的所有数字
  • 核心规则:
    • 仅当数字处于「6到9」或「9到6」的连续区间内时才排除
    • 两个6或两个9之间的数字需要正常计入求和
  • 测试示例:
    输入列表 list1 = [1,2,3,4,6,7,3,5,9,7,2,4,9,4,5,6,7,8,9,4,3,2,1],预期求和结果为33

原代码的问题

你提供的原代码仅处理了「6开启排除、9关闭排除」的单向场景,无法覆盖「9开启排除、6关闭排除」的反向区间,也不能正确处理多组6/9交替的情况。

修正后的解决方案

我们需要通过一个状态变量标记当前是否处于排除区间,并且让6和9都具备翻转状态的能力,同时这两个数字本身不计入总和:

def sum_exclude_6_9_range(nums):
    total = 0
    exclude = False  # 标记是否处于需要排除的区间
    for num in nums:
        # 遇到6或9时,翻转排除状态,且自身不计入总和
        if num == 6 or num == 9:
            exclude = not exclude
            continue
        # 仅当不处于排除区间时,累加数字
        if not exclude:
            total += num
    return total

测试验证

用给定的示例列表测试:

list1 = [1,2,3,4,6,7,3,5,9,7,2,4,9,4,5,6,7,8,9,4,3,2,1]
print(sum_exclude_6_9_range(list1))  # 输出:33,与预期结果一致

逻辑说明

  1. 初始状态exclude=False,正常累加所有数字
  2. 每遇到6或9时,翻转exclude的状态(从排除切换到不排除,或反之),同时跳过当前数字(6和9本身不计入总和)
  3. 只有当exclude=False时,才将当前数字加到总和中

这样就能正确处理所有区间场景:不管是6→9还是9→6的区间,都会被排除;两个6或两个9之间的数字则会正常计入求和。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 06:26:22