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

自定义Python Wordle游戏颜色显示异常且触发行值不匹配错误

Wordle游戏颜色匹配函数错误修复方案

核心问题根源

问题出在重复字母的计数逻辑漏洞:目标词"NANNY"包含两个N,处理猜测"NORTH"时,首字母N匹配标记绿色后,剩余字母的计数维护或遍历逻辑出错,导致没有为所有5个字母生成颜色值,最终返回的颜色列表长度不足5,触发ValueError。

具体排查与修复步骤

  • 初始化固定长度的颜色列表:先创建长度为5的空列表,确保每个位置都会被赋值,避免因逻辑跳过导致长度不足。
  • 分两步处理颜色标记:
    1. 先遍历所有位置,标记字母和位置都匹配的绿色,每标记一个,就将目标词中对应字母的剩余计数减1(避免重复匹配)。
    2. 再次遍历所有位置,跳过已标记绿色的位置,对剩余字母判断:若字母在目标词剩余计数中存在且数量>0,标记黄色并减少计数;否则标记灰色。
  • 检查循环终止条件:确保函数中没有break这类提前终止循环的语句,必须遍历完所有5个字母位置。

修复后的示例代码

from collections import Counter

def get_guessed_word_colors(guess, target):
    # 统计目标词各字母出现次数
    target_char_counts = Counter(target)
    # 初始化长度为5的颜色列表,避免长度不足
    colors = [''] * len(target)
    
    # 第一步:标记绿色匹配(位置和字母都对)
    for idx in range(len(target)):
        if guess[idx] == target[idx]:
            colors[idx] = 'green'
            target_char_counts[guess[idx]] -= 1
    
    # 第二步:标记黄色和灰色
    for idx in range(len(target)):
        # 跳过已标记绿色的位置
        if colors[idx] == 'green':
            continue
        current_char = guess[idx]
        if current_char in target_char_counts and target_char_counts[current_char] > 0:
            colors[idx] = 'yellow'
            target_char_counts[current_char] -= 1
        else:
            colors[idx] = 'gray'
    
    return colors

测试验证

调用get_guessed_word_colors("NORTH", "NANNY")会返回['green', 'gray', 'gray', 'gray', 'gray'],长度为5,符合预期且不会触发错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 04:46:08