Python 3.x 迭代测试Python3中的数字输入

Python 3.x 迭代测试Python3中的数字输入,python-3.x,isnumeric,isalpha,Python 3.x,Isnumeric,Isalpha,我必须测试用户的输入是否是数字。否则,我需要再次请求输入。听起来很简单,对吧?但是,请检查以下功能 # Request number from user def request_number(): number = input("Please, enter the card number you want to check: ") if number.isnumeric(): return int(number) elif number.isalpha()

我必须测试用户的输入是否是数字。否则,我需要再次请求输入。听起来很简单,对吧?但是,请检查以下功能

# Request number from user
def request_number():
    number = input("Please, enter the card number you want to check: ")
    if number.isnumeric():
        return int(number)
    elif number.isalpha() or number.isalnum() or number.isdecimal():
        request_number()
如果用户的第一次输入实际上是一个数字,则可以正常工作
4111111111

但是,如果用户首先输入字符串,例如
asbsdl
。该函数正确地请求第二次输入一个数字,但即使您输入一个数字,它也会返回
None


有人能解释一下吗?谢谢。

原因是您没有返回递归调用。要解决此问题,请将递归调用(最后一行)更改为
返回请求\u number()

忽略递归调用返回值。请参阅副本。但是,您确实不应该在这里使用递归,请参阅优秀。谢谢在这上面已经有一段时间了。。。。。。或者整套
是…
检查。。。这个副本有一个答案,你可以复制/粘贴它来请求输入,直到它是一个有效的
int