Python统计连续重复字符时报String index out of range错误如何解决?
问题分析与修复方案
现有代码的三个核心问题
- 索引越界:循环遍历范围使用
range(len(word)),当j取到最大值len(word)-1时,访问j+1的位置等价于访问下标为len(word)的字符,超出了字符串的有效索引范围(字符串下标从0到len(word)-1),因此触发IndexError。 - 判断条件逻辑错误:原代码判断
word[j] == word[j:j+1]永远成立,word[j]是单个字符,word[j:j+1]是从下标j开始取1个字符的切片,二者值完全相同,无法实现连续重复字符的判断,正确逻辑应该是判断word[j] == word[j+1]。 - 变量未初始化:
chars_count变量在使用前没有赋值初始值0,运行时会触发未定义变量的报错。
修正后代码
def double_chars(word): chars_count = 0 # 遍历到倒数第二个字符即可,避免越界 for j in range(len(word) - 1): if word[j] == word[j+1]: chars_count += 1 return chars_count test_word = "Hello..world!" print(double_chars(test_word)) # 输出结果为2,匹配预期:ll、..各算1次
验证
输入测试用例bell--rung时,函数返回结果为2,符合需求。
内容的提问来源于stack exchange,提问作者OlaJ
相关产品推荐
相关产品推荐

