2017-04-18 9 views
0

エラーは次のとおりです。なぜ私はunboundLocalErrorを取得していますか?私は取得しています

UnboundLocalError: local variable referenced before assignment?

コード:

def menu_option(index, count): 
     import random 
     random_number1 = random.randrange(1,31) 
     random_number2 = random.randrange(1,31) 
     if index == 1: 
      problem = random_number1 + random_number2 
     elif index == 2: 
      problem = random_number1 - random_number2 
     elif index == 3: 
      problem = random_number1 * random_number2 
     elif index == 4: 
      problem = random_number1 // random_number2 
     elif index == 5: 
      problem = random_number1 % random_number2 
     user_solution = get_user_solution(problem) 
     return check_solution(user_solution, solution, count) 
+0

コードをインデントしてください。答えるのが簡単になります。 – JkShaw

+0

どの行にエラーがありますか? –

+0

エラーメッセージはそれより少し大きいです...エラーが発生した行が含まれています。エラーメッセージ全体を投稿できますか? – tdelaney

答えて

0

if/elif/elif ...のチェーンは、これらの条件が満たされていないとしますか?その後、problemは割り当てられません。しかし、あなたはuser_solution = get_user_solution(problem)でそれを使用しようとします。 problemのように見えます。この解決策は、この場合にあなたの設計が何をすべきかにかかっています。使用すべきデフォルトがありますか?あなた自身の例外を起こす?エラーコードを返しますか?それを決める必要があります。

0

最後の行ではヒマンシュは、あなたが変数solutionに使用していたので、それが言ったようにreturn check_solution(user_solution, solution, count)solution変数が

0

が定義されていません。これはあなたが割り当てをしていないものです。したがって、この場合、pythonは関数内でそれを探します。そうでなければ、グローバルでそれを探します。使用前にそれに割り当てが見つからない場合はUnboundLocalErrorを、また変数problemをブロックに限定して、外部にアクセスできないと考えます。したがって、ブロック内のネストされた前にある程度の値を持つproblemを割り当て、関数内で渡す前に割り当てるべきものについてはsolutionの変数をチェックしてください。

関連する問題