0

ユーザーに1〜9の数字を入力するように求める簡単なプログラムがあり、その数字が以前に入力されている場合は、ユーザーに別の数字を入力するように求めます。ユーザーの試行回数は 10 回です。

これは私がやりたかったことの一部にすぎませんが、getNum メソッドからそれを呼び出すメソッドにパラメーターを渡す際に問題が発生しています。1から9までの数字を入力すれば問題ありません。以前に入力した番号を入力すると問題が発生し、プロンプトで別の番号を要求されます。

def getNum(numList):
    num = input("Pick your number: ")

    if num <= 0 or num >9:
        print 'Invalid number. Please try again.'
        getNum()

    if num in numList:
        print 'Number taken. Please try again.'
        getNum()

    else: 
        return num  

inputList = []
endGame = True
choice = 0  
attempts = 0 
while endGame == False or attempts < 10:

    userNum = getNum(inputList)
    print 'Number entered:', userNum
    inputList.append(userNum)
    print inputList

    attempts += 1 

ここで私が間違っていたことを誰かに教えてもらえますか?

4

3 に答える 3

1

使用する必要があります

return getNum(numList)

それ以外の

getNum(numList)

getNum関数で。その理由は、getNum関数を再帰的に呼び出すため、行ったすべての再帰を通じて受け入れられた値を返す必要があるためです。さらに、各呼び出しに引数を渡す必要があります。

于 2013-09-18T07:26:45.270 に答える
0

inputエラー処理の危険性がなく、再帰制限の問題がない完全なソリューションです。

def get_num(num_list):
    while True:
        try:
            num = int(raw_input('Pick your number: '))
        except ValueError:
            print('Not a number')
        else:
            if 0 < num <= 9:
                if not num in num_list:
                    return num
                else:
                    print('Number taken.')
            else:
                print('Invalid number.')

number_list = []
for _ in range(5):
    number = get_num(number_list)
    print('Number entered: {}'.format(number))
    number_list.append(number)
于 2013-09-18T07:43:20.617 に答える