Python遍历字符串时自定义计数器获取字符索引结果错误原因是什么
问题分析
你的自定义计数器逻辑错误核心是:counter的自增操作被放在了else分支,只有当前字符不等于'o'的时候才会累加计数器,遇到匹配的'o'时计数器不会自增,因此出现了索引偏移。
具体执行流程拆解:
- 遍历到索引4的字符'o'时,满足
i == 'o'条件,直接打印counter值4,没有执行counter自增,counter停留在4 - 遍历索引5的空格时,走else分支,counter变为5
- 遍历索引6的'W'时,走else分支,counter变为6
- 遍历索引7的'o'时,满足匹配条件,直接打印当前counter值6,因此输出了错误的索引结果
修正方案
把counter的自增逻辑移到if判断外,每次遍历完字符都累加即可:
val = 'Hello World' counter = 0 print("Index of 'o' Using Index Function: ", val.index('o', 5)) print('---------------------------------------') for i in val: if i == 'o': print(i, counter) counter += 1 # 不管字符是否匹配,每次循环都累加计数 print("------------------") for i, var in enumerate(val): print(i, var)
修改后运行就能输出正确的o的索引4和7。
内容的提问来源于stack exchange,提问作者Kapil Yadav
相关产品推荐
相关产品推荐

