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

Python实现Wordle游戏:重复字母的单词对比逻辑问题求助

解决Wordle游戏中重复字母的对比问题

原函数的核心问题是没跟踪目标单词中每个字母的可用数量,导致重复字母被错误标记。比如目标单词是apple(仅含1个a),用户输入aaple时,原函数会把第二个a标记为小写,但实际上这个a是多余的,应该显示下划线。

修改后的对比函数

def comparison_func(user_input, random_word):
    # 统一转为小写,避免大小写干扰
    user_lower = user_input.lower()
    target_lower = random_word.lower()
    output = [""] * 5
    # 统计目标单词中每个字母的出现次数
    letter_count = {}
    for char in target_lower:
        letter_count[char] = letter_count.get(char, 0) + 1

    # 第一步:处理位置完全匹配的字母
    for x in range(5):
        if user_lower[x] == target_lower[x]:
            output[x] = user_lower[x].upper()
            # 匹配后减少对应字母的可用次数
            letter_count[user_lower[x]] -= 1

    # 第二步:处理位置不匹配但存在的字母
    for x in range(5):
        # 跳过已经匹配正确的位置
        if output[x] != "":
            continue
        current_char = user_lower[x]
        if current_char in letter_count and letter_count[current_char] > 0:
            output[x] = current_char.lower()
            letter_count[current_char] -= 1
        else:
            output[x] = "_"

    return "".join(output)

代码说明

  • 字母计数:用字典letter_count记录目标单词中每个字母的剩余可用次数,避免重复匹配。
  • 两步匹配:
    1. 先遍历所有位置,标记完全匹配的字母为大写,并减少对应字母的可用次数。
    2. 再遍历剩余未匹配的位置,检查当前字母是否还有剩余可用次数,有则标记为小写,否则标记为下划线。

测试示例

  • 目标单词:apple,用户输入:aaple
    输出:A_Ppl(第一个A匹配正确,第二个a因目标已无剩余a显示下划线,p、p、l分别匹配正确或存在)
  • 目标单词:teeth,用户输入:treet
    输出:T_rE_(第一个T匹配正确,r不存在,第二个e匹配正确,e已无剩余,最后一个t不存在)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 02:17:42