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
相关产品推荐
相关产品推荐

