如何在Python循环中控制索引不自动递增?CodingBat sum67问题求助
问题分析
- Python的
for...enumerate循环的索引由预先生成的迭代器控制,你在循环内部手动修改i的值不会影响下一轮循环的索引取值,这是原有逻辑失效的核心原因 - 原有代码只判断了6的下一个元素是否为7,没有覆盖6和7之间存在多个元素的场景,且错误使用
break会直接终止整个循环,导致7之后的有效元素也不会被统计
修正代码(基于原有思路调整)
我们改用while循环手动控制索引,完全贴合你「检测到6后遍历到对应7再继续处理后续元素」的原始思路:
def sum67(nums): valid = [] i = 0 nums_len = len(nums) while i < nums_len: if nums[i] == 6: # 遍历找到当前6对应的7的位置 while i < nums_len and nums[i] != 7: i += 1 # 跳过7本身,直接到下一个待处理位置 i += 1 else: valid.append(nums[i]) i += 1 return sum(valid)
测试验证
调用sum67([1, 2, 2, 6, 99, 99, 7]),返回结果为5,符合预期。
内容的提问来源于stack exchange,提问作者rabunc
相关产品推荐
相关产品推荐

