2016-04-19 12 views
-2

以下のコードをどのように動作させるかわかりません。私はこの例外を取得しています:UnboundLocalError:代入前にローカル変数 'user_a'が参照されています

UnboundLocalError: local variable 'u' referenced before assignment

user_a = "No selection" 
def if_statement(): 
    user_choice = input("Pick 1 or 2\n") 
    if user_choice == "1": 
     user_a = input("What would you like A to equal?\n") 
     if_statement() 
    elif user_choice == "2": 
     print("A equals: " + user_a) 
     if_statement() 
if_statement() 

誰がこの上で私を助けることができますか?私はPythonを初めて使うように指定しなければなりません。 ありがとうございます。

+0

:あなたもこのようglobalを使用することができるもの

def if_statement(user_a='no selection'): user_choice = raw_input("Pick 1 or 2\n") if user_choice == "1": u = input("What would you like A to equal?\n") if_statement(user_a=u) elif user_choice == "2": print("A equals: " + user_a) if_statement(user_a=user_a) if_statement() 

かを、他の人はあなたのコードにそれらを適用することはできません、どのように私たちがあなたを助けることができると思いますか? – jonrsharpe

+0

私が持っているより具体的な質問には回答していないからです。 – Matt

+0

...もっと具体的な質問をすることができますか?これまでのところ、「未解決のローカルエラーを修正する」*です。 – jonrsharpe

答えて

2

ソリューション(S):

をパラメータとして、いくつかのデフォルト値を使用してください:あなたはすべて読んでいれば

user_a = "No selection" 
def if_statement(): 
    global user_a # here is the trick ;-) 
    user_choice = raw_input("Pick 1 or 2\n") 
    if user_choice == "1": 
     user_a = input("What would you like A to equal?\n") 
     if_statement() 
    elif user_choice == "2": 
     print("A equals: " + user_a) 
     if_statement() 

if_statement() 
+0

それは完璧に動作します - ありがとう – Matt

+0

私はちょうどprint( "A equals:" + user_a)を使いました。私の実際のコードでは、user_aだけでなく多くの変数もあります。最後になぜraw_inputを入力したのですか? – Matt

+0

python3の場合はraw_inputが入力になりましたが、python2の場合は両方とも存在し、同じように動作しません:http://stackoverflow.com/questions/4915361/whats-the -difference-raw-input-and-input-in-python3-x –

関連する問題