模式搜索python函数没有给出预期的结果



我写了一个函数,只有在输入正确的格式时才返回值给主代码,添加到我的学校项目中,但是我遇到了一个小问题,我不明白为什么。

代码-

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

最新更新