Python获取用户输入错误

Python获取用户输入错误,python,user-input,Python,User Input,我有一个简单的程序,提示用户输入1-9之间的数字,如果之前输入了数字,它会要求用户输入另一个数字。用户有10次尝试 这只是我想做的一部分,但是我在将参数从getNum方法传递到调用它的方法时遇到了问题。如果我输入1-9之间的数字,它没有问题。当我输入之前输入的号码时,问题开始出现,提示要求输入另一个号码 def getNum(numList): num = input("Pick your number: ") if num <= 0 or num >9:

我有一个简单的程序,提示用户输入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 
def getNum(numList):
num=输入(“选择您的号码:”)
如果num 9:
打印“无效号码”。请再试一次
getNum()
如果numList中有num:
打印所取的号码。请再试一次
getNum()
其他:
返回数
inputList=[]
终局
选择=0
尝试次数=0
当endGame==False或尝试次数<10时:
userNum=getNum(输入列表)
打印“输入的编号:”,userNum
inputList.append(userNum)
打印输入列表
尝试次数+=1
有人能告诉我我做错了什么吗

您需要使用

return getNum(numList)
而不是

getNum(numList)

getNum
函数中。原因是递归调用
getNum
函数,因此必须通过所有递归返回接受的值。此外,必须将参数传递给每个调用。

在“if conditions”中调用getNum()的方式是错误的 应该是:-

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

if num in numList:
    print 'Number taken. Please try again.'
    getNum(numList)
如果num 9:
打印“无效号码”。请再试一次
getNum(numList)
如果numList中有num:
打印所取的号码。请再试一次
getNum(numList)

一个完整的解决方案,没有输入、错误处理和递归限制的危险

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)
def get_num(num_列表):
尽管如此:
尝试:
num=int(原始输入('选择您的号码:'))
除值错误外:
打印('不是数字')
其他:

如果0输入是另一个缺陷。