Python实现连续相同字符检测函数报索引越界,如何正确迭代?
双字母检测问题修复方案
原代码错误点
- 索引范围错误:你使用
range(len(word)+1)生成遍历下标,字符串下标取值范围是0 ~ 长度-1,要同时取i和i+1做对比时,i最大只能到长度-2,否则会触发下标越界报错。 - 逻辑提前返回错误:第一次循环无论对比结果是否相等都会直接返回值,不会遍历后续字符,比如传入
abb时,代码会因为前两个字符a和b不相等直接返回False,忽略后续的连续b,返回结果不符合预期。
正确实现
遍历范围调整为range(len(word)-1),仅当所有相邻字符都对比完成仍未找到连续相同字符时,再返回False:
def double_letters(word): for i in range(len(word)-1): if word[i] == word[i+1]: return True return False
验证用例
double_letters('hello')返回Truedouble_letters('Master')返回False,无索引报错double_letters('nono')返回Falsedouble_letters('a')返回False(单字符无相邻对,边界场景正常)double_letters('')返回False(空字符串边界场景正常)
内容的提问来源于stack exchange,提问作者sa_n
相关产品推荐
相关产品推荐

