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

Wordle求解算法嵌套for循环出现List index out of range错误

Wordle求解算法索引越界问题修复

错误原因

你碰到的List index out of range错误,核心问题是five_letter_words列表里混了不是5个字符的内容——比如文本文件里的空行、换行残留、长度不符的单词。当代码把这类内容拆成字符列表word后,循环for x in range(0,5)访问word[x]时,一旦x超过了word的实际长度,就会触发索引越界。

修复步骤

  1. 过滤无效单词:读取文件后,先把非5字母的内容全部筛掉,确保列表里只有合法的5字母单词:
my_file = open("valid-wordle-words.txt", "r")
data = my_file.read()
# 过滤空行、空白字符和非5字母单词
five_letter_words = [word.strip() for word in data.split("\n") if word.strip() and len(word.strip()) == 5]
my_file.close()
  1. 简化字符拆分逻辑:不需要循环逐个添加字符,直接用list(w)就能把字符串转成字符列表,减少冗余代码:
for w in five_letter_words:
    word = list(w)  # 替换原来的循环append逻辑
    for x in range(0,5):
        if word[x] == word_answer[x] and word_colors[x] != "g":
            words_to_remove.append(w)
            break
  1. 可选:增加输入校验:防止用户输入的颜色数量不对,导致后续逻辑出错:
for c in word_answer:
    color = input("Color:").strip().lower()  # 统一转小写并去空白
    word_colors.append(color)
    if color == 'y':
        yellow.append(c)
    if color == 'b':
        black.append(c)

# 校验颜色输入数量是否为5
if len(word_colors) != 5:
    print("请输入5个颜色值(g/y/b)")
    exit()

修复后完整代码

my_file = open("valid-wordle-words.txt", "r")
data = my_file.read()

# 过滤出合法的5字母单词
five_letter_words = [word.strip() for word in data.split("\n") if word.strip() and len(word.strip()) == 5]

my_file.close()

word_answer = ["t", "r", "e", "a", "d"]
word_colors = []

yellow = []
black = []
words_to_remove = []

for c in word_answer:
    color = input("Color:").strip().lower()
    word_colors.append(color)
    
    if color == 'y':
        yellow.append(c)
        
    if color == 'b':
        black.append(c)

# 校验颜色输入数量
if len(word_colors) != 5:
    print("请输入5个颜色值(g/y/b)")
    exit()

# 移除包含黑色字符的单词
for w in five_letter_words:
    for c in black:
        if c in w:
            words_to_remove.append(w)
            break

# 移除不包含黄色字符的单词
for w in five_letter_words:
    for c in yellow:
        if c not in w:
            words_to_remove.append(w)
            break

# 移除不符合绿色匹配规则的单词
for w in five_letter_words:
    word = list(w)
    for x in range(0,5):
        if word[x] == word_answer[x] and word_colors[x] != "g":
            words_to_remove.append(w)
            break

# 去重并更新单词列表
five_letter_words = [i for i in five_letter_words if i not in words_to_remove]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 01:02:33