我写了一个函数,只有在输入正确的格式时才返回值给主代码,添加到我的学校项目中,但是我遇到了一个小问题,我不明白为什么。
代码-
def xinput(text, pattern):
myinput = input(text)
match = re.search(pattern,myinput)
if match is None:
print("nError. nPlease give input in correct format.n")
xinput(text, pattern)
else:
return myinput
val = xinput("Enter a number : ", pattern=r"^[d]+$")
print(val)
第一次输入正确的值可以工作,但如果第一次输入错误而第二次输入正确,则返回None。
下面是输出-
Enter a number : q
Error.
Please give input in correct format.
Enter a number : 1
None
我已经检查过了,myinput
仍然是1
,直到返回它之前。
您需要返回递归调用返回的值:
if match is None:
print("nError. nPlease give input in correct format.n")
return xinput(text, pattern) # added return here
else:
return myinput
因为你没有在你的代码中返回它,当你的函数完成时,它进入你的if语句,结果不做任何事情,因此返回None
。