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

Python猜单词游戏:重复字符仅填充第一个的问题求助

猜单词游戏重复字母匹配问题修复

问题根源

你的代码里,randWordSplit.index(item)方法只会返回目标字母第一次出现的索引,所以遇到重复字母(比如"baboon"里的第二个o)时,无法定位到后续的位置,导致display列表里只有第一个匹配项被填充。另外函数内的guessPos未声明全局变量,还会引发未定义错误。

修复方案

  1. 用enumerate()遍历单词的索引和字符,直接定位每个匹配字母的位置,避免使用index()方法。
  2. 初始化display时直接生成与单词长度一致的下划线列表,无需提前让用户猜一次,简化逻辑。
  3. 处理函数内的变量作用域问题,确保能正确修改全局的display列表。

修复后的完整代码

import random

# 随机选单词
wordList = ["baboon", "baboon", "baboon"]
randWord = random.choice(wordList)
print(f'Psst the random word is: {randWord}.')

# 初始化display为全下划线,长度和目标单词一致
display = ["_"] * len(randWord)
randWordSplit = list(randWord)

def guess_loop():
    # 声明使用全局的display变量
    global display
    guess = input("Guess a letter (in lowercase): ")
    # 用enumerate同时获取索引和对应的字符
    for idx, char in enumerate(randWordSplit):
        if char == guess:
            display[idx] = guess

# 开始游戏循环
while "_" in display:
    print(display)
    guess_loop()

print("游戏结束!正确单词是:", randWord)
print(display)

关键修改说明

  • display = ["_"] * len(randWord):直接生成和单词长度相同的下划线列表,不用提前处理第一次猜测,逻辑更顺畅。
  • enumerate(randWordSplit):遍历的时候同时拿到每个字符的索引idx和字符char,只要字符匹配,就直接把display对应索引的位置设为猜测的字母,所有重复字母都会被正确填充。
  • global display:在函数内声明使用全局的display变量,确保修改能生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:33:27