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

Python Hangman游戏:如何处理列表中重复字符的显示问题

Hangman游戏重复字母匹配问题解决

问题描述

当前代码仅能替换第一个匹配字母对应的下划线,例如当secretWord为"skill"、猜测字符为"l"时,仅显示_ _ _ l _,期望显示_ _ _ l l。原代码如下:

secretWorld=list(input("secretWorld: "))
guess=str(input("guess: "))

if guess in secretWord:
        ind=secretWord.index(guess)
        contl[ind*2]=guess
print(contl)

问题原因

list.index(guess)方法只会返回第一个匹配字符的索引,因此仅能替换对应位置的下划线,无法处理重复出现的字符。另外原代码存在变量名拼写错误:secretWorld应为secretWord,否则会引发未定义变量报错。

解决方案

遍历整个秘密单词列表,找出所有与猜测字符匹配的索引,逐个替换显示列表中对应的位置,同时补全显示列表的初始化逻辑:

# 获取秘密单词并转为列表
secretWord = list(input("secretWord: "))
# 初始化显示列表,生成"_ _ _ _ _"样式的结构
contl = []
for _ in secretWord:
    contl.append("_")
    contl.append(" ")
# 移除最后多余的空格
if contl:
    contl.pop()

# 获取用户猜测的字符
guess = input("guess: ")

# 遍历所有字符,替换所有匹配的位置
for idx, char in enumerate(secretWord):
    if char == guess:
        contl[idx * 2] = guess

# 更美观地打印结果
print("".join(contl))

代码说明

  • 用enumerate遍历secretWord,同时获取字符的索引和对应值
  • 对每个匹配的索引,计算其在contl中的对应位置(idx*2)并替换为猜测字符
  • 用"".join(contl)将列表转为字符串,避免打印出列表的方括号和逗号,显示更符合游戏预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:45:40