2016-05-18 14 views
-2

私はtkinterを使ってGUI単語推測ゲームを構築しようとしています。 UnboundLocalError:ローカル変数 'guesses'が、 'guesses:guesses:'の行に ''という代入の前に参照されています。Python GUI単語推測ゲーム

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) 

私が変更したスコープ単位で推測し、私はそれを何度も定義し直して何も動かなかった。私はこのエラーを防ぐために何をすべきか分かりません。

ご協力いただければ幸いです。ありがとう!

答えて

2

グローバル変数を使用する必要のあるメソッドでは、globalキーワードを使用します。ある

は、代わりにその外側、内側play()方法をglobal guessesを置きます。

guesses = [] 
... 
def play(): 
    global guesses 
    while remaining.get() > 0: 
     if guess.get().isalpha() == False or len(guess.get()) != 1: 
      .... 

これを使用するのはあまり快適ではありません。 Pythonの経験が豊富になると、クラス間で共有する必要がある変数を格納してアクセスするために、クラスを使用したいと思うこともあります。

最後に、今後の質問では、より広い意図ではなく実際の問題を特定するタイトルを使用することを検討してください。あなたはそのような有益な答えを受け取る可能性がより高くなります!

関連する問題