You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python连续三字符检测函数问题:为何无法识别后续连续序列?

修复Python consec函数的连续三字符检测问题

原函数的核心问题是循环内过早返回False:第一次循环(i=0)时,只要开头三个字符不匹配,就直接返回False,导致后续位置的字符完全没有被检查。同时原代码还存在索引越界风险——当字符串长度小于3时,n[i+2]会抛出IndexError。

修改方案一:调整循环范围与返回逻辑

def consec(n):
    # 限制循环范围,避免访问超出字符串长度的索引
    for i in range(len(n) - 2):
        if n[i] == n[i+1] == n[i+2]:
            return True
    # 遍历完所有可能位置后仍未找到,才返回False
    return False

关键改动说明:

  1. 循环范围修正:range(len(n)-2)确保i+2不会超出字符串的最大索引(当字符串长度小于3时,len(n)-2为负数,循环直接跳过)。
  2. 返回位置调整:将return False移到循环外部,只有当所有可能的连续三字符组合都检查完毕且未匹配时,才返回False。

修改方案二:使用any()函数简化实现

如果追求代码简洁性,可以用any()函数结合生成器表达式,逻辑与方案一完全一致,但代码更紧凑:

def consec(n):
    return any(n[i] == n[i+1] == n[i+2] for i in range(len(n)-2))

测试验证

  • consec("AAABC") → True(开头匹配)
  • consec("ABCCC") → True(中间位置匹配)
  • consec("ABBC") → False(无连续三字符)
  • consec("A") → False(短字符串安全处理)

内容的提问来源于stack exchange,提问作者Adam Cora

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 00:30:53