带特殊规则的数字列表求和问题:排除指定区间数字
解决多组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,与预期结果一致
逻辑说明
- 初始状态
exclude=False,正常累加所有数字 - 每遇到6或9时,翻转
exclude的状态(从排除切换到不排除,或反之),同时跳过当前数字(6和9本身不计入总和) - 只有当
exclude=False时,才将当前数字加到总和中
这样就能正确处理所有区间场景:不管是6→9还是9→6的区间,都会被排除;两个6或两个9之间的数字则会正常计入求和。
内容的提问来源于stack exchange,提问作者babypython
相关产品推荐
相关产品推荐

