迭代测试 Python3 中的数字输入

Iteratively testing for an input that is numeric in Python3

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

# 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()

如果用户的第一个输入实际上是一个数字,它工作正常4111111111111111

但是,如果用户先输入一个字符串,比如asbsdl。该函数第二次正确地询问一个数字,但即使您输入一个数字,它也会 returns None

任何人都可以解释一下吗?谢谢。

所以原因是因为您没有返回递归调用。要解决此问题,请将递归调用(最后一行)更改为 return request_number()