我有一个简单的程序,提示用户在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 有人能告诉我我在这里做错了什么吗?
发布于 2013-09-18 07:26:45
你需要用
return getNum(numList)而不是
getNum(numList)在getNum函数中。原因是您递归地调用了getNum函数,因此您必须通过所做的所有递归返回接受的值。此外,必须将参数传递给每个调用。
发布于 2013-09-18 07:27:29
在“如果条件”中调用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)发布于 2013-09-18 07:43:20
一个完整的解决方案,没有危险的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)https://stackoverflow.com/questions/18866110
复制相似问题