首页 > 解决方案 > Python 代码返回“NoneType”而不是“int”

问题描述

对不起,我是一个完整的初学者,昨天才开始。

我对以下代码有疑问。所以,只要我输入一个数字,它就可以正常工作,它会返回为“int”(这就是我需要的)。但是,如果我再次输入触发 number_validation() 函数的任何其他内容,它将返回为“NoneType”。知道为什么或我做错了什么吗?

谢谢你的帮助!

def number_validation():
    number = input("Please enter a number: ")
    if number == "":
        print("You need to enter a number")
        number_validation()
    elif number != "":
        if number.isdigit() == True:
            number = int(number)
            return number
        else:
            print("Numbers only, no spaces, please try again!")
            number_validation()

标签: pythonintnonetype

解决方案


那是因为当你第二次调用它时你没有returning 。number_validation

In [210]: def number_validation():
     ...:     number = input("Please enter a number: ")
     ...:     if number == "":
     ...:         print("You need to enter a number")
     ...:         number_validation()
     ...:     elif number != "":
     ...:         if number.isdigit() == True:
     ...:             number = int(number)
     ...:             return number
     ...:         else:
     ...:             print("Numbers only, no spaces, please try again!")
     ...:             return number_validation()      # Note the return here
     ...:

In [211]: number_validation()
Please enter a number: a
Numbers only, no spaces, please try again!
Please enter a number: 10
Out[211]: 10

使用您的原始代码,您将到达函数的末尾而不返回任何内容,因此 Python 将隐式返回None


推荐阅读