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

Wordle项目中遭遇“list index out of range”错误的排查求助

解决Wordle过滤逻辑中的"list index out of range"错误

错误根源

你遇到的IndexError来自两个核心问题:

  1. 索引越界:循环for x in range(len(data))会让x遍历到len(data)-1,此时x+1等于列表长度,超出了列表的最大索引(列表索引从0开始,最大索引为len(data)-1)。
  2. 循环中修改列表长度:使用pop()删除元素后,列表长度会缩短,但循环仍按初始的len(data)执行,后续的x会指向已不存在的位置。

另外你的原逻辑在处理重复字母时存在错误:比如当遇到C级别的项时,代码会删除C项,这和Wordle的规则(保留位置正确的绿色项)相悖。

修复方案

  1. 限制循环范围:因为要对比data[x]和data[x+1],循环只需遍历到len(data)-2,避免x+1越界。
  2. 从后往前遍历:避免删除元素后打乱未遍历的索引顺序。
  3. 修正优先级逻辑:保留优先级高的项(C > W > I),删除低优先级的重复项。

修改后的完整代码

word = "APPLE"
guess = "AMPLE"

data = []
output = ""

if len(guess) != 5:
    print("Guess should be 5 letters long.")
if not guess.isalpha():
    print("Guess should be an English word.")
else:
    for x in range(5):
        for y in range(5):
            if word[x] == guess[y]:
                if x == y:
                    data.append(guess[y] + "C" + str(y))
                else:
                    data.append(guess[y] + "W" + str(y))
            else:
                data.append(guess[y] + "I" + str(y))

    data = list(set(data))
    print(data)  # Test

    # 按位置数字排序
    for i in range(len(data)):
        for j in range(0, len(data) - i - 1):
            if data[j][2] > data[j + 1][2]:
                data[j], data[j+1] = data[j+1], data[j]
    
    print(data)  # Test

    # 修复后的去重逻辑:从后往前遍历,保留高优先级项
    priority = {'C':3, 'W':2, 'I':1}
    x = len(data) - 2
    while x >= 0:
        current_char = data[x][0]
        next_char = data[x+1][0]
        if current_char == next_char:
            # 比较优先级,删除低的那个
            if priority[data[x][1]] < priority[data[x+1][1]]:
                data.pop(x)
            else:
                data.pop(x+1)
        x -= 1

print(data)  # Test
print(output)

关键修改说明

  • 使用while循环从后往前遍历,彻底避免列表长度变化导致的索引混乱。
  • 定义优先级字典priority,清晰对比不同状态的优先级,确保保留符合Wordle规则的项。
  • 调整pop()的目标:当当前项优先级低于下一项时删除当前项,否则删除下一项,保证高优先级的项被保留。

内容的提问来源于stack exchange,提问作者Troy Dave Ericson Avendano

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:59:58