Wordle计数器功能异常求助:每次猜测后提前显示答案
问题修复方案
核心问题定位
你代码里的print("The word was", word)被放在了每次猜测后的循环内部,只要剩余尝试次数不为0就会执行,这就是每次猜完就显示目标单词的原因。
修复后的完整代码
import json import random # 终端颜色定义,增加重置色避免后续输出异常 black = '\033[40m' green = '\033[42m' yellow = '\033[43m' reset = '\033[0m' # 用with语句自动管理文件,无需手动关闭 with open('wordle_no_dupes.json') as f: info = json.load(f) word = random.choice(info) print("请输入一个5字母单词:") attempts_left = 6 while attempts_left > 0: guess = input("输入猜测:").lower() # 先验证输入长度(可选增强) if len(guess) != 5: print("请输入恰好5个字母的单词!") continue # 不在词库的输入不消耗次数 if guess not in info: print("该单词不在词库中,请重新输入!") continue # 合法输入消耗一次尝试次数 attempts_left -= 1 # 输出带颜色标记的猜测结果 for i in range(5): if guess[i] == word[i]: print(green, guess[i], end="") elif guess[i] in word: print(yellow, guess[i], end="") else: print(black, guess[i], end="") # 重置终端颜色并换行 print(reset) # 猜对直接结束游戏 if guess == word: print("你猜对了!") break # 循环结束后,仅当用尽次数且未猜对时才显示目标单词 if attempts_left == 0 and guess != word: print(f"游戏结束,目标单词是:{word}")
关键修改点说明
- 调整目标单词显示时机:把显示目标单词的逻辑移到循环结束后,仅在用户用尽所有尝试且未猜对时触发。
- 优化文件操作:用
with语句自动处理文件关闭,避免原代码中f.close缺少括号导致的文件未正确关闭问题。 - 简化尝试次数逻辑:只有输入词库内的合法单词才消耗次数,非法输入直接跳过不扣次数,逻辑更清晰。
- 修复颜色残留问题:增加终端颜色重置代码,避免后续输出被背景色覆盖。
- 优化循环结构:改用
while循环直接基于剩余尝试次数判断,避免原for循环中变量冗余的问题。
内容的提问来源于stack exchange,提问作者Naruku
相关产品推荐
相关产品推荐

