我有一个简单的程序,提示用户输入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
有谁能让我知道我在这里做错了什么?
答案 0 :(得分:1)
您需要使用
return getNum(numList)
而不是
getNum(numList)
getNum
函数中的。原因是您以递归方式调用getNum
函数,因此必须通过所有递归返回接受的值。此外,您必须将参数传递给每个调用。
答案 1 :(得分:0)
你在“如果条件”错误时调用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)
答案 2 :(得分: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)