我正在使用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来说,我是一个新手,所以我承认我的程序有点草率,因为我仍在尝试着解决问题。有谁知道可能导致这个问题的原因?
答案 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))