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

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}")

关键修改点说明

  1. 调整目标单词显示时机:把显示目标单词的逻辑移到循环结束后,仅在用户用尽所有尝试且未猜对时触发。
  2. 优化文件操作:用with语句自动处理文件关闭,避免原代码中f.close缺少括号导致的文件未正确关闭问题。
  3. 简化尝试次数逻辑:只有输入词库内的合法单词才消耗次数,非法输入直接跳过不扣次数,逻辑更清晰。
  4. 修复颜色残留问题:增加终端颜色重置代码,避免后续输出被背景色覆盖。
  5. 优化循环结构:改用while循环直接基于剩余尝试次数判断,避免原for循环中变量冗余的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 00:15:35