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

计算单词开头连续相同字母数时遇字符串索引越界错误求解决

问题解决:字符串索引越界错误修复

错误原因

你的代码在对比字母时,未判断当前索引是否超出两个待比对单词的长度范围。比如对比hello和hell时,hell仅4个字符,当letter增加到4时,i[letter]会访问不存在的索引,触发IndexError。

修正方案(两种可选)

方案一:用zip简化遍历(推荐)

def same(word, liste):
    dico = dict()
    for current_word in liste:
        match_count = 0
        # 同时遍历两个单词的字符,较短单词遍历完后自动停止
        for w_char, c_char in zip(word, current_word):
            if w_char == c_char:
                match_count += 1
            else:
                break
        dico[current_word] = match_count
    
    return max(dico, key=dico.get)
  • 利用zip函数自动对齐两个单词的字符,避免手动索引操作,从根源上杜绝越界问题。
  • 字符不同时立即跳出循环,完全符合“逐字母比对直到出现不同”的需求。

方案二:保留原循环结构,增加边界判断

def same(word, liste):
    dico = dict()
    for i in liste:
        letter = 0
        # 新增两个边界判断:不超过目标单词长度,也不超过当前单词长度
        while letter < len(word) and letter < len(i) and word[letter] == i[letter]:
            letter += 1
        dico[i] = letter
    
    return max(dico, key=dico.get)
  • 在原while条件中加入长度判断,确保索引始终在有效范围内。
  • 保留你原本的代码逻辑结构,仅做最小修改。

测试输入same('hello',['hi','hell','helo']),两种方案都会正确返回'hell'。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 07:26:08