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

在Hangman游戏中用玩家猜测字符替换所有匹配的下划线

解决Hangman游戏中替换所有匹配字符的问题

你的问题出在randomWord.find(userInput)——这个方法只会返回第一个匹配字符的索引,所以不管单词里有几个相同的字符,你都只能替换第一个下划线,自然没法批量更新所有匹配的位置。

用enumerate解决的思路

enumerate()是Python里遍历序列时的实用工具,它能同时返回每个元素的索引和元素本身。用它遍历目标单词,就能逐个检查每个位置的字符是否和用户输入一致,然后批量替换guess里对应的下划线。

修改后的代码示例

# 初始化下划线字符串,直接用乘法更简洁
guess = "_" * len(randomWord)

# 标记是否找到匹配字符,避免重复减missLett
found = False
# 用enumerate遍历,同时拿到索引i和对应字符char
for i, char in enumerate(randomWord):
    if char == userInput:
        # 把guess转成列表才能修改单个字符
        guess_list = list(guess)
        guess_list[i] = userInput
        guess = "".join(guess_list)
        found = True

# 只有找到匹配时才减少错误次数
if found:
    missLett -= 1

代码说明

  • 初始化guess时,"_" * len(randomWord)比循环拼接更高效,直接生成和目标单词长度相同的下划线字符串。
  • 用enumerate(randomWord)遍历,每次循环拿到i(当前字符的索引)和char(当前字符)。
  • 每次匹配到用户输入的字符时,就修改guess对应索引的位置。
  • 加个found变量标记是否找到匹配,这样不管找到多少个字符,missLett只会减一次,符合Hangman的规则(猜对一个字符只算一次正确猜测)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 08:43:10