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

Python版Hang Man游戏重复字母显示错误问题求助

修复Python版Hang Man游戏重复字母显示错误问题

问题描述

开发Python版Hang Man游戏时,使用列表parola展示猜中的字母,但当目标单词包含重复字母时,第二个重复字母会显示在错误位置。朋友用C++复刻相同算法(对应代码第61-64行)却能正常运行。

错误原因

原代码中处理猜中字母的循环逻辑存在漏洞:

x = 0
guess = ''
for i in word:
    if i == e:
        parola[x] = e
    else:
        x+=1

这段代码仅在字符不匹配时递增索引x,遇到匹配字符时x会停滞,导致后续字符的索引计算偏移,最终重复字母被放到错误位置。比如单词label中,第二个e会被错误地放到索引2的位置,而正确位置是3。

修复方案

修改循环逻辑,无论字符是否匹配,都要递增索引x,或者更简洁地使用enumerate遍历单词的索引和字符:

方法一:修正索引递增逻辑

x = 0
for i in word:
    if i == e:
        parola[x] = e
    x += 1  # 不管是否匹配,都保持索引递增

方法二:使用enumerate(更简洁推荐)

for idx, char in enumerate(word):
    if char == e:
        parola[idx] = e

替换后的完整click函数关键片段

if e in word:
    # 用enumerate遍历索引与字符,精准定位匹配位置
    for idx, char in enumerate(word):
        if char == e:
            parola[idx] = e
    print(parola)
    
    out_lett['text'] = parola
    out_lett['font'] = ('Cormorant SC', 30)
    out_lett['fg'] = '#A5C9CA'
    out_lett.grid(row= 9, column= 4)

验证效果

以单词label为例,猜中字母e时,parola会正确更新为['-', 'e', '-', 'e', '-'],重复字母的位置不再偏移。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:55:46