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

Python猜词游戏如何实现正确位置字母大写的规则效果

猜词游戏格式显示逻辑实现指引

你需要把格式生成逻辑放在每次获取用户输入guess之后、判断是否猜对的分支之前,Python中字符串转大写直接调用str.upper()方法,转小写调用str.lower()方法即可。
你原有代码存在两个核心问题:一是匹配逻辑写错,拿完整输入字符串和单个位置的字符做对比永远不会触发位置匹配;二是跨轮次复用结果列表,没有处理「字母存在但位置错误」的分支,也没做重复字母的计数规避,很容易出现显示bug。

具体实现规则

每次用户提交猜测后,不要复用之前的显示结果,重新生成本次的展示字符串即可,分三步判断每个字符的显示形式:

  • 同位置和谜底完全一致的字符:转大写展示
  • 字符在谜底中存在、但位置不对:转小写展示
  • 字符完全不在谜底剩余未匹配的字符里:展示下划线_

注意处理重复字母场景:比如谜底heaven包含2个e,如果用户只输入了1个e,只能给1个位置标记匹配,需要在匹配后把对应谜底字符标记为已使用,避免重复计数。

修正后可直接运行的代码

print("Welcome to the word guessing game!")
print(" ")
secret_word = "heaven"
secret_length = len(secret_word)
guess_count = 0

while True:
    guess = input("What is your guess? ").lower()
    # 校验输入长度,避免索引报错
    if len(guess) != secret_length:
        print(f"Please enter a {secret_length}-letter word!")
        continue
    guess_count += 1
    # 每次猜测重新初始化结果列表,不沿用之前的显示状态
    result = ["_"] * secret_length
    # 存未被匹配的谜底字符,匹配过的标记为None
    remaining_secret_chars = list(secret_word)

    # 第一遍遍历:匹配位置完全正确的字符,转大写
    for i in range(secret_length):
        if guess[i] == secret_word[i]:
            result[i] = guess[i].upper()
            remaining_secret_chars[i] = None

    # 第二遍遍历:匹配存在但位置错误的字符,转小写
    for i in range(secret_length):
        # 已经正确匹配的位置直接跳过
        if result[i] != "_":
            continue
        current_char = guess[i]
        if current_char in remaining_secret_chars:
            result[i] = current_char.lower()
            # 标记对应字符已被匹配,避免重复计数
            matched_pos = remaining_secret_chars.index(current_char)
            remaining_secret_chars[matched_pos] = None

    # 判断是否猜对
    if "".join(result).lower() == secret_word:
        print("")
        print("You guessed it!")
        break
    print("".join(result))

print(f"It took you {guess_count} guesses")

运行后效果示例:比如谜底是heaven,输入hxxxxx会输出H_____,输入xxexxx只会输出__e___(不会因为谜底有两个e就输出两个e),输入长度不对的内容会直接提示重输。

内容的提问来源于stack exchange,提问作者Víctor Martínez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:15:32