我正在尝试使用tkinter构建一个GUI单词猜测游戏。我收到一个 UnboundLocalError:局部变量'猜测'在分配之前引用为'如果猜测中的猜测:'猜测:'。
我在我的代码顶部有这个:
global guesses
guesses = []
这是抛出错误的函数:
def play():
while remaining.get() > 0:
if guess.get().isalpha() == False or len(guess.get()) != 1:
output.set('Invalid input. Please enter a letter from a-z.')
else:
if guess.get() in guesses:
output.set('That letter has already been guessed!')
else:
if guess.get() not in secret_word:
output.set('That letter does not occur in the secret word.')
else:
output.set('That is a good guess! ' + str(guess.get()) + ' occurs ' + \
str(countOccurences(str(secret_word), guess.get())) + ' time(s) in the secret word')
guesses += guess.get()
remaining.set(remaining.get() - 1)
if '_' not in getHint(secret_word, guesses):
result.set('Congratulations! You guessed the secret word: ' + str(secret_word))
break
if remaining == 0:
result = 'Sorry, the secret word was: ' + str(secret_word)
我已经改变了范围方面的猜测,我已多次重新定义它并且没有任何效果。我不知道还能做些什么来防止这个错误。
任何帮助都将非常感激。谢谢!
答案 0 :(得分:2)
在需要使用全局变量的方法中使用global
关键字。
也就是说,将global guesses
放在 play()
方法中,而不是放在它之外。
guesses = []
...
def play():
global guesses
while remaining.get() > 0:
if guess.get().isalpha() == False or len(guess.get()) != 1:
....
尽管使用它不要太舒服。随着您对Python的经验越来越丰富,您可能希望使用类来存储和访问需要在方法之间共享的变量。
最后,对于今后的问题,请考虑使用标题来确定实际问题,而不是更广泛的意图。你会更有可能以这种方式获得有用的答案!