如何实现检测字符串是否存在相邻重复双字母的Python函数?
连续相邻相同字母判断函数修正方案
你的原有代码存在以下三处核心问题:
- 语法错误:Python 字符串取单个字符的语法为
string[索引值],你使用的string[index1, string_len]是多维数组的索引格式,运行会直接抛出TypeError - 逻辑错误:
word1、word2仅在循环外赋值一次,循环中更新索引后没有重新读取对应位置的字符,对比的永远是初始错误值 - 缺少兜底返回:如果字符串中不存在连续相同字母,函数没有返回值,会默认返回
None不符合需求
最优实现方案
直接遍历字符串的相邻字符对即可,代码简洁易读:
def double_letters(string): # 只需遍历到倒数第二个字符,避免索引越界 for i in range(len(string) - 1): if string[i] == string[i+1]: return True # 遍历完所有相邻对都无匹配返回False return False
执行print(double_letters("Error"))会返回True,完全符合预期。
基于你原有写法的修正版本
如果你希望保留原有的while循环逻辑,修正后代码如下:
def double_letters(string): string_len = len(string) - 1 index1 = 0 index2 = 1 while string_len > 0: # 每次循环更新索引后,重新读取当前位置的字符对比 word1 = string[index1] word2 = string[index2] if word1 != word2: index1 += 1 index2 += 1 string_len -= 1 else: return True # 兜底返回无连续相同字符的情况 return False
内容的提问来源于stack exchange,提问作者Marco
相关产品推荐
相关产品推荐

