2012-01-10 6 views
0

私はPythonの初心者です。私はそれを使いこなし始めました。それは「guess_number」と呼ばれる機能で、それは1〜10の間に一定の数の人を尋ねる簡単なプロセスです辞書の変数を使う

def guess_number(Name,Gender): 
    if Gender=='Male': 
     Title='Mr.' 
    else: 
     Title='Ms.' 
    number=int(raw_input("Hello " + Title + Name + ", guess what my favorite number is between 1-10")) 
    if number==4: 
     print number 
     print "That's my favorite number!" 
    else: 
     print number 
     print "Try Again!" 
    return number 

choice_dict=dict([(1,0),(2,0),(3,0),(4,0),(5,0),(6,0),(7,0),(8,0),(9,0),(10,0)]) 

for i in range(10): 
    guess_number("Noam","Male") 
    choice_dict[number]=choice_dict[number]+1 

print choice_dict[1], choice_dict[2], choice_dict[3], choice_dict[4], choice_dict[5], choice_dict[6], choice_dict[7], choice_dict[8], choice_dict[9], choice_dict[10] 

: 私はこの単純なコードを持っています。それは機能を10回繰り返し、選択された各数字に対して辞書の数字に+1を加え、最後に各数字が何回選択されたかを印刷します。

何らかの理由で私は関数 "guess_number"に変数 "number"を返しても "number"が定義されていないことが分かりません。

何が欠けていますか?

答えて

1

変更

guess_number("Noam","Male") 

number = guess_number("Noam","Male") 

numberにではなくグローバルな範囲で、guess_number関数の(ローカル)の範囲で定義されています。グローバルスコープでnumberを参照するには、number最初のニーズはグローバルスコープからアクセスでき、その値にバインドする

リファレンス(機能からローカル変数にアクセスできない以下、LEGBルールを参照してください。):

4

number機能guess_number可変ローカルです。それはそれの外には存在しません。あなたが返すのは、変数そのものではなく、その値です。これは、使用する必要があるか、何かに割り当てる必要があります。あなたも、同じ名前の変数に割り当てることができます - 限り、あなたは理解してそれだけで同じ名前を持つことを起こる変数です:

number = guess_number("Noam", "Male") 
+0

+1、良い説明に

guess_number("Noam","Male") 

を変更。 –

+0

ありがとうございました!今、私は分かる。 – Pichie

0

変数「数」あなたの機能で「guess_number」その関数にのみローカルです。問題を解決するには、 "guess_number"の結果に変数 "number"を割り当てる必要があります。したがって、

number = guess_number("Noam","Male") 
関連する問題