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

字符串中a与b间恰好3个字符的检测代码修复求助

字符串'a'与'b'间隔3字符检测的IndexError修复方案

问题根源

  • 原代码循环遍历整个字符串索引,但当i接近字符串末尾时,i+4会超出字符串的最大索引范围,直接触发IndexError。比如第三个测试字符串'look after baby',末尾附近的'a'对应的i加上4后,已经超出了字符串的长度。
  • 代码最后一行的return string完全是无效代码,永远不会被执行,因为前面已经有return False了。

修复后的代码

def hi_coder(string):
    # 限制循环范围,确保i+4不会越界
    for i in range(len(string) - 4):
        if string[i] == 'a' and string[i+4] == 'b':
            return True
    return False

print(hi_coder(input()))

修复细节

  • 循环范围改为range(len(string)-4):因为字符串索引从0开始,要让i+4不超过最后一个有效索引len(string)-1,i的最大值只能是len(string)-5,而range(len(string)-4)刚好生成0到len(string)-5的所有整数(利用range左闭右开的特性)。
  • 如果字符串长度小于5,len(string)-4会是负数,此时range()生成空序列,循环直接跳过,函数返回False,这符合逻辑——长度不足5的字符串不可能存在间隔3个字符的'a'和'b'。
  • 删掉了没用的return string语句。

内容的提问来源于stack exchange,提问作者Abror Karimov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:25:25