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

Python循环实现Hangman游戏show_hidden_word函数求助

Hangman猜字游戏单词显示函数实现方案

需求背景

需要实现猜字游戏的核心展示函数,函数定义:

def show_hidden_word(secret_word, old_letters_guessed):

参数规则

  • secret_word:字符串,玩家需要猜测的目标单词
  • old_letters_guessed:列表,存储玩家到当前轮次已经猜过的所有字母

功能要求

返回由字母和_组成的展示字符串:

  • 已经被猜中的字母(即同时存在于secret_word和old_letters_guessed中的字母)显示在原单词对应位置
  • 未被猜中的位置用_占位

预期效果

>>> secret_word = "mammals"
>>> old_letters_guessed = ['s', 'p', 'j', 'i', 'm', 'k']
>>> print(show_hidden_word(secret_word, old_letters_guessed))
m _ m m _ _ s

强制要求:必须使用for或while循环实现,不能用推导式等其他简写方式

原有代码问题排查

你提交的代码运行不符合预期,问题出在3个地方:

def show_hidden_word(secret_word, old_letters_guessed):
 clue = ""
 for letter in secret_word:
  if letter in clue == True:
   clue + letter
   clue = clue + letter
  else:
   clue + '_'
   clue = '_'+ clue
 return clue
  1. 判断逻辑错误
    • 判断对象错了:你在判断letter in clue,clue是你正在拼的结果串,正确的判断应该是当前遍历到的字母是否在已猜列表old_letters_guessed里
    • 写法错误:letter in clue == True触发了Python的链式比较规则,实际等价于(letter in clue) and (clue == True),完全达不到判断真假的效果
  2. 拼接顺序错误
    拼下划线时用了'_' + clue,相当于每次把新字符插到整个字符串的最前面,遍历完成后字符顺序是完全颠倒的,应该顺着遍历顺序从左往右追加字符
  3. 冗余无效代码
    单独写clue + letter没有赋值给任何变量,这行代码不会对结果产生任何影响,属于无效代码

可运行正确实现

def show_hidden_word(secret_word, old_letters_guessed):
    clue = ""
    for letter in secret_word:
        if letter in old_letters_guessed:
            # 猜中就追加原字母,后面加空格匹配示例格式
            clue += letter + " "
        else:
            # 没猜中就追加下划线加空格
            clue += "_ "
    # 去掉末尾多余的空格后返回
    return clue.strip()

运行测试后输出和预期完全一致:m _ m m _ _ s。如果不需要字符间的空格,把拼接时的" "删掉即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 15:15:33