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

如何避免遍历列表时重复处理已匹配元素?Wordle游戏逻辑修复

Wordle游戏重复字符误判问题修复方案

你的问题核心是未跟踪目标词中字符的剩余可用次数,同时没排除已经匹配正确的字符,导致重复字符被错误判定。比如目标词could只有1个O,当第一个O匹配正确后,第二个O本不该触发提示,但原代码仅检查字符是否存在于目标词,没考虑已用掉的配额。

修复后代码

import sys

def guess_words(word_list, gameBoard):
    i = 0
    target_word = ''.join(word_list).upper()
    while i < 6:
        guessed = input("Enter 5 letter Word: ").upper()
        if not guessed.isalpha() or len(guessed) != 5 or guessed.lower() not in get_words():
            print("Invalid Word")
            continue
        
        # 统计目标词各字符的出现次数,用于跟踪剩余可用配额
        char_count = {}
        for char in target_word:
            char_count[char] = char_count.get(char, 0) + 1
        
        # 第一步:标记所有位置完全匹配的字符,并消耗对应字符的配额
        for idx, guess_char in enumerate(guessed):
            if guess_char == word_list[idx]:
                gameBoard[idx] = guess_char
                char_count[guess_char] -= 1
        
        # 第二步:处理非完全匹配的字符,仅当字符还有剩余配额时提示
        for idx, guess_char in enumerate(guessed):
            if gameBoard[idx] == guess_char:
                continue  # 跳过已匹配正确的字符
            if guess_char in char_count and char_count[guess_char] > 0:
                print(f"The letter {guess_char} is somewhere else.")
                char_count[guess_char] -= 1
        
        i += 1
        print(gameBoard)

        if i >= 6 and "-" in gameBoard:
            sys.exit("You Lost")

        if "-" not in gameBoard:
            sys.exit("You Win!")

        print(f"Guesses Left: {6 - i}")

关键修改说明

  1. 字符配额统计:用char_count字典记录目标词中每个字符的出现次数,确保每个字符的提示次数不超过其在目标词中的实际数量。
  2. 分两步处理:
    • 先处理所有位置完全匹配的字符,标记到gameBoard同时减少对应字符的配额(因为该字符已经被正确匹配一次,不能再用于其他位置的提示)。
    • 再遍历非匹配字符,仅当该字符还有剩余配额时,才触发“在别的位置”的提示,同时再次减少配额,避免重复提示。

以你的测试场景为例:目标词could,猜测rotor时,第一个O匹配正确后,char_count['O']变为0,第二个O遍历到的时候,因配额为0不会触发提示,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 21:22:37