2017-07-18 9 views
0

私はあなたの頭の中で0と100の間の数字を推測する小さなゲームを書いていました。そして、コンピュータはそれを推測しようとします。ここでは、コードの抜粋です:なぜ私はそれをグローバルに宣言したにもかかわらず、 'foo'がローカル変数であるとPythonが言っていますか?

import random 
global foo 
foo=input() 
global k 
k=random.randint(0,100) 

def f(): 

    if foo.lower()=='too low': 
    k=random.randint(k,100) 
    foo=input('The number that I guessed is' + ' ' + str(k) +'. Please give your comment.') 
    print(k) 
f() 

それはというエラーがスローされます。このサイトに

UnboundLocalError: local variable ‘foo’ referenced before assignment

他の記事globalを使用することをお勧めします。私はして、まだエラーを取得しています。 Pythonは、なぜそれがグローバルであると宣言したとしても、fooはローカル変数であると言っていますか?そして、どうすればこのバグを取り除くことができますか?このような関数の内部にグローバルスコープから

+2

は – PRMoureu

+0

@PRMoureuは、私の以前のプログラムでは、私は関数の外にそれを使用した関数の内部で使用する必要があり、それはかなり働きましたよく –

+0

@AaryanDewanあなたはそれを間違ってやっていましたが、決してそれに再割り当てしなかったので問題はありませんでした。グローバルスコープからしか読み込めない場合は、宣言する必要はありません。 –

答えて

2

移動global foo:グローバル

import random 
foo=input() 
k=random.randint(0,100) 

def f(): 
    global foo 
    global k 
    if foo.lower()=='too low': 
     k=random.randint(k,100) 
     foo=input('The number that I guessed is' + ' ' + str(k) +'. Please give your comment.') 
     print(k) 
+0

私は試してみて、同じエラー –

+1

'foo'または' k'についてなぜなら、あなたは 'k'と同じ問題を抱えているからです。 –

+0

ちょうど 'k'でも固定されています –

関連する問題