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

猜词游戏字符串叠加问题求助:无法保留已猜中字符状态

问题分析

你的猜词游戏核心问题在于每次猜中字母时,没有保留之前已经猜对的字符,而是重新生成了全下划线加当前字母的字符串。比如目标单词是apple,第一次猜p时生成_pp__,但第二次猜l时,代码会遍历apple,只把l的位置换成l,其他位置都加_,所以得到___l_,完全覆盖了之前猜对的p。

错误原因

问题出在这段核心代码:

if letter in Woord:
    count = Woord.count(letter)
    print('Correct')
    for char in Woord:
        if char == letter:
            geraden_letters += char
            correct = correct + 1
        else:
            geraden_letters += '_'
    print(geraden_letters)

每次猜中字母时,geraden_letters会被从头拼接,之前存储的猜对字符完全被覆盖,自然无法叠加显示所有已猜中的字母。

修复方案
  1. 初始化geraden_letters为与目标单词长度相同的下划线字符串,确保初始占位符数量匹配。
  2. 每次猜中字母时,仅替换目标单词中对应位置的字符,保留之前已猜中的内容。
  3. 修正正确计数逻辑,避免重复累加同一字母的次数。

修复后的完整代码:

while True:
    Woord = input('请输入猜词游戏的目标单词: ')
    correct = 0
    superCorrect = len(Woord)
    gokjes = 8
    dood = 0
    # 初始化对应长度的下划线占位符
    geraden_letters = '_' * len(Woord)
    
    # 打印初始界面
    print('\n' * 20)
    print(' '.join(geraden_letters))
    print('\n' * 2)
    
    for i in range(gokjes):
        letter = input('猜一个字母: ')
        if letter == "":
            exit()
        
        if letter in Woord:
            print('正确')
            # 字符串不可直接修改,转成列表操作
            temp_list = list(geraden_letters)
            new_correct = 0
            # 遍历目标单词,替换未被猜中的对应位置
            for idx, char in enumerate(Woord):
                if char == letter and temp_list[idx] == '_':
                    temp_list[idx] = letter
                    new_correct += 1
            # 更新已猜中的字符串和正确计数
            geraden_letters = ''.join(temp_list)
            correct += new_correct
            
            print(' '.join(geraden_letters))
            if correct == superCorrect:
                print(f'单词是... {geraden_letters.upper()}!')
                exit()
        else:
            print('错误')
            print(letter)
            dood = 1
    
    if dood == 1:
        print('你输了,绞刑架完成')
        print()
关键改进点
  • 用'_' * len(Woord)初始化占位符,保证长度与目标单词一致。
  • 借助列表修改字符(Python字符串不可变),只替换未被猜中的位置,保留之前的正确结果。
  • 新增new_correct变量统计本次猜中的新字符数,避免重复计数同一字母(比如apple里的两个p,第一次猜p时仅计数+2)。
  • 用' '.join(geraden_letters)让输出格式更清晰美观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 14:25:10