1

私は次のguessgetterように定義された関数を持つプログラムを書いています:

def guessgetter():
    print("What number do you choose?")
    num = int(input())
    if num > 100 or num < 1:
        print("Please choose a number between 1 and 100")
        guessgetter()

この構文が有効であることはわかっています。ただし、後でコード内で (作成した関数を実行した後) を参照するとnum、値が定義されていないと表示されます。どうすればこれを修正できますか?

4

3 に答える 3

3

問題は、num が関数guessgetter のスコープで定義されている一方で、コードの他の場所で定義されていないことです。関数によって生成された num の値を使用する場合は、関数の最後の行として追加してみてください

return num

次に、次のように関数を呼び出します。

x = guessgetter()

関数の外部で使用できる変数 x に取得した値を格納します。

于 2013-08-18T00:17:18.570 に答える
0

関数から値を返し、関数を呼び出すときに返された値をキャプチャする必要があります。末尾再帰にも対処する必要があります。これはにつながります:

def guessgetter():
    print("What number do you choose?")
    num = int(input())
    if num > 100 or num < 1:
        print("Please choose a number between 1 and 100")
        num = guessgetter()
    return num

次のように使用できます。

guess = guessgetter()
于 2013-08-18T01:35:05.067 に答える
0

function のスコープ外ではguessgetter、変数numは存在しません。後で の値を知りたい場合numは、変数をnum グローバルにする(つまり、どこからでもアクセスできるようにする) 必要があります。これを行う最も簡単な方法は、次の行を追加することです

global num

num が割り当てられる前に関数に:

def guessgetter():
    print "What number do you choose?"
    global num
    num = int(input())
    if num > 100 or num < 1:
        print("Please choose a number between 1 and 100")
        guessgetter()
于 2013-08-18T01:16:49.283 に答える