Python GUI猜词游戏

时间:2016-05-18 06:15:09

标签: python user-interface tkinter

我正在尝试使用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)

我已经改变了范围方面的猜测,我已多次重新定义它并且没有任何效果。我不知道还能做些什么来防止这个错误。

任何帮助都将非常感激。谢谢!

1 个答案:

答案 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的经验越来越丰富,您可能希望使用类来存储和访问需要在方法之间共享的变量。

最后,对于今后的问题,请考虑使用标题来确定实际问题,而不是更广泛的意图。你会更有可能以这种方式获得有用的答案!