Python 函数在输入错误后返回None
我需要一个函数,除了错误的输入,并要求再次输入。但输入错误后,它返回Python 函数在输入错误后返回None,python,python-3.x,Python,Python 3.x,我需要一个函数,除了错误的输入,并要求再次输入。但输入错误后,它返回None,而不是新输入。我的代码出了什么问题,如何解决 def start(): def inputNumber(answer): try: number = int(input(answer)) if number <= 100 and number >= 0: print('%%%',number,'%%%'
None
,而不是新输入。我的代码出了什么问题,如何解决
def start():
def inputNumber(answer):
try:
number = int(input(answer))
if number <= 100 and number >= 0:
print('%%%',number,'%%%')
return number
else:
inputNumber('Number is wrong, please input number from 0 to 100: ')
except (ValueError):
inputNumber('It is not a number, please input number from 0 to 100: ')
def checkInput(number2):
print('$$$',number2,'$$$')
if number < 50:
return number2
else:
return checkInput(inputNumber('Input number from 0 to 100: '))
number = 0
print('###',checkInput(inputNumber('Input number from 0 to 100: ')),'###')
start()
start()
def start():
def输入编号(回答):
尝试:
数字=整数(输入(回答))
如果数字=0:
打印(“%%”,数字“%%”)
返回号码
其他:
inputNumber('数字错误,请输入0到100之间的数字:')
除了(值错误):
inputNumber('不是数字,请输入0到100之间的数字:')
def检查输入(编号2):
打印(“$$”,数字2,$$$)
如果数字小于50:
返回号码2
其他:
返回checkInput(inputNumber('inputNumber从0到100:'))
数字=0
打印('####',检查输入(inputNumber('输入编号从0到100:')),'###')
开始()
开始()
结果是:
从0到100的输入号码:777
编号错误,请输入0到100之间的编号:sadf
不是数字,请输入0到100之间的数字:17
%%%17%%%
$$$无$$$
TypeError:无序类型:NoneType()您正在递归调用
inputNumber
,但不返回递归调用的结果。更好地使用循环而不是递归:
def inputNumber(prompt):
while True:
try:
number = int(input(prompt))
if 0 <= number <= 100:
print('%%%',number,'%%%')
return number
prompt = 'Number is wrong, please input number from 0 to 100: '
except ValueError:
prompt = 'It is not a number, please input number from 0 to 100: '
def输入编号(提示):
尽管如此:
尝试:
数字=整数(输入(提示))
如果0您正在递归调用inputNumber
,但不返回递归调用的结果。更好地使用循环而不是递归:
def inputNumber(prompt):
while True:
try:
number = int(input(prompt))
if 0 <= number <= 100:
print('%%%',number,'%%%')
return number
prompt = 'Number is wrong, please input number from 0 to 100: '
except ValueError:
prompt = 'It is not a number, please input number from 0 to 100: '
def输入编号(提示):
尽管如此:
尝试:
数字=整数(输入(提示))
如果0则问题在于,一旦检查失败,您将再次调用inputNumber
,但不对答案执行任何操作。你需要归还它
def start():
def inputNumber(answer):
try:
number = int(input(answer))
if number <= 100 and number >= 0:
print('%%%', number, '%%%')
return number
else:
return inputNumber('Number is wrong, please input number from 0 to 100: ')
except (ValueError):
return inputNumber('It is not a number, please input number from 0 to 100: ')
def checkInput(number2):
print('$$$', number2, '$$$')
if number < 50:
return number2
else:
return checkInput(inputNumber('Input number from 0 to 100: '))
number = 0
print('###', checkInput(inputNumber('Input number from 0 to 100: ')), '###')
start()
start()
def start():
def输入编号(回答):
尝试:
数字=整数(输入(回答))
如果数字=0:
打印(“%%”,数字“%%”)
返回号码
其他:
返回inputNumber('数字错误,请输入0到100之间的数字:')
除了(值错误):
返回inputNumber('不是数字,请输入0到100之间的数字:')
def检查输入(编号2):
打印(“$$”,数字2,$$$)
如果数字小于50:
返回号码2
其他:
返回checkInput(inputNumber('inputNumber从0到100:'))
数字=0
打印('####',检查输入(inputNumber('输入编号从0到100:')),'###')
开始()
开始()
问题是,一旦检查失败,您会再次调用inputNumber
,但对答案不做任何处理。你需要归还它
def start():
def inputNumber(answer):
try:
number = int(input(answer))
if number <= 100 and number >= 0:
print('%%%', number, '%%%')
return number
else:
return inputNumber('Number is wrong, please input number from 0 to 100: ')
except (ValueError):
return inputNumber('It is not a number, please input number from 0 to 100: ')
def checkInput(number2):
print('$$$', number2, '$$$')
if number < 50:
return number2
else:
return checkInput(inputNumber('Input number from 0 to 100: '))
number = 0
print('###', checkInput(inputNumber('Input number from 0 to 100: ')), '###')
start()
start()
def start():
def输入编号(回答):
尝试:
数字=整数(输入(回答))
如果数字=0:
打印(“%%”,数字“%%”)
返回号码
其他:
返回inputNumber('数字错误,请输入0到100之间的数字:')
除了(值错误):
返回inputNumber('不是数字,请输入0到100之间的数字:')
def检查输入(编号2):
打印(“$$”,数字2,$$$)
如果数字小于50:
返回号码2
其他:
返回checkInput(inputNumber('inputNumber从0到100:'))
数字=0
打印('####',检查输入(inputNumber('输入编号从0到100:')),'###')
开始()
开始()
运行此代码,它将解决您的问题。您只需要捕获为额外错误(namererror
)
def start():
def输入编号(回答):
尝试:
数字=整数(输入(回答))
如果数字=0:
打印(“%%”,数字“%%”)
返回号码
其他:
inputNumber('数字错误,请输入0到100之间的数字:')
除(ValueError,NameError)外,其他为e:
inputNumber('不是数字,请输入0到100之间的数字:')
def检查输入(编号2):
打印(“$$”,数字2,$$$)
如果数字小于50:
返回号码2
其他:
返回checkInput(inputNumber('inputNumber从0到100:'))
数字=0
打印('####',检查输入(inputNumber('输入编号从0到100:')),'###')
开始()
开始()
运行此代码,它将解决您的问题。您只需要捕获为额外错误(namererror
)
def start():
def输入编号(回答):
尝试:
数字=整数(输入(回答))
如果数字=0:
打印(“%%”,数字“%%”)
返回号码
其他:
inputNumber('数字错误,请输入0到100之间的数字:')
除(ValueError,NameError)外,其他为e:
inputNumber('不是数字,请输入0到100之间的数字:')
def检查输入(编号2):
打印(“$$”,数字2,$$$)
如果数字小于50:
返回号码2
其他:
返回checkInput(inputNumber('inputNumber从0到100:'))
数字=0
打印('####',检查输入(inputNumber('输入编号从0到100:')),'###')
开始()
开始()
Sorry函数checkInput()是错误的,但不管怎样,它都不返回任何值。在Python中,return
是显式的。您必须返回函数的结果。在else
和except
中的inputNumber
之前添加return
。抱歉,函数checkInput()是错误的,但不管怎样它都不返回任何值。在Python中return
是显式的。您必须返回函数的结果。在else
和除外的中的inputNumber
之前添加return
。