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的实际长度,就会触发索引越界。
修复步骤
- 过滤无效单词:读取文件后,先把非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()
- 简化字符拆分逻辑:不需要循环逐个添加字符,直接用
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
- 可选:增加输入校验:防止用户输入的颜色数量不对,导致后续逻辑出错:
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
相关产品推荐
相关产品推荐

