Python for循环中如何让i自增3?统计X并跳过后续2个字符的问题
问题根本原因
Python的for循环搭配range()迭代时,每次循环的索引i会被自动赋值为range序列的下一个元素,你在循环体内部对i执行i += 2的修改只会在当前轮次生效,下一轮循环开始时i会被覆盖为序列的下一个值,完全起不到跳过后续元素的效果。比如第一轮i=0,修改i为2,下一轮循环i自动变成1,相当于修改无效。
修复方案
把for循环换成while循环,手动控制索引的步进逻辑:遇到X的时候主动把索引加3(当前X占1位,再往后跳2位,总共加3),没遇到X的话每次索引加1即可。
可运行的代码示例
def count_x(arr): count = 0 i = 0 arr_length = len(arr) while i < arr_length: if arr[i] == 'X': count += 1 i += 3 # 跳过当前X+后续2个元素,直接步进3位 else: i += 1 # 未命中X仅步进1位 return count
测试验证
- 输入
XXXY:输出1,符合预期 - 输入
XXXYX:输出2,符合预期 - 输入
XYXXXXXYX.:输出3,符合预期 - 输入
XXYXXXY:输出2,符合预期 - 输入
XXXX:输出2,符合预期
内容的提问来源于stack exchange,提问作者Nerfed
相关产品推荐
相关产品推荐

