python - 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()
解决方案
那是因为当你第二次调用它时你没有return
ing 。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
推荐阅读
- knex.js - Knexjs:事务和原始查询
- php - 如何在codeigniter中设置自定义配置类的项目值?
- direct3d - Direct3D 着色器内部编译器错误 X8000:无效字节码
- pilosa - 如何在没有完整架构的情况下列出 pilosa 中的索引名称
- python - 如何使用包装类的对象作为包装函数中的参数
- mysql - 如何为每个第一次出现的列值获取行
- python-3.x - 在循环python中解析大型XML
- mongodb - 在 MongoDB 中允许 SSL 有效证书/无效主机名
- google-bigquery - 从 BigQuery SQL 中的日期获取 MONTH NAME
- php - 找不到类“PHPExcel_Worksheet_Protection”