Hangman Tkinter GUI - for循环的麻烦

时间:2015-12-13 17:50:49

标签: python tkinter

我正在使用Tkinter为python hangman game编写GUI。我用我的for循环遇到了一些麻烦,我用这个循环替换隐藏单词的空白,当用户猜到字母时,该空白字符与空白对应。这是循环:

def reveal(self, start=False, full=False):
    global hiddenWord, charList

    if start == True:
        for i in answerWord:
            if i == " ":
                charList.append(" ")
            else:
                charList.append("__")
        hiddenWord.set(" ".join(charList))

    elif full == True:
        hiddenWord.set(answerWord)

    else:
        c = guess.get()            
        for i in answerWord:
            if i == c.lower():
                charList[answerWord.index(i)] = i
            elif i == c.upper():
                charList[answerWord.index(i)] = i
        hiddenWord.set(" ".join(charList))

我遇到的问题是,当我运行程序并且隐藏的单词是多次出现相同字母的单词时,偶尔只会替换第一次出现的单词。以下是单词“california”时出现此问题的一个实例: california missing second 'i' and second 'a'。现在,这不会一直发生,我无法调试问题,因为我似乎无法找到它确实发生的实例之间的任何共同因素。对于Tkinter来说,我是一个新手,所以我承认我的程序有点草率,因为我仍在尝试着解决问题。有谁知道可能导致这个问题的原因?

1 个答案:

答案 0 :(得分:1)

出于某种原因,我能够通过编辑for循环的逻辑来解决我的问题:

else:
        c = guess.get()            
        for i in range(0,len(answerWord)):
            if answerWord[i] == c.lower():
                charList[i] = answerWord[i]
            elif answerWord[i] == c.upper():
                charList[i] = answerWord[i]
        hiddenWord.set(" ".join(charList))