Python函数含return却输出None?茶饮价格计算函数问题排查
问题原因及修复方案
为什么函数返回None?
你的函数返回None主要有两个核心问题:
- 匹配目标错误:代码里的
S、M、L、J是未定义的变量,而用户输入的是字符串(比如"S"),导致所有if/elif条件都不满足,函数执行完所有分支后无返回值,Python默认返回None。 - 无异常分支处理:如果用户输入的不是S/M/L/J(比如小写s、其他字符),所有条件都不命中,函数同样没有返回值,最终返回None。
修复后的代码
def CalculateTotal(): strSize = input("Enter the size of tea (S)mall, (M)edium, (L)arge, (J)umbo: ").upper() if strSize == "S": return 2.99 elif strSize == "M": return 3.59 elif strSize == "L": return 4.09 elif strSize == "J": return 4.99 else: # 处理无效输入,避免返回None return "Invalid size entered"
关键修改说明
- 将匹配目标改为字符串常量
"S"、"M"等,修正未定义变量的错误。 - 对用户输入调用
.upper(),统一转为大写,兼容用户输入小写的情况(比如"s"也能匹配成功)。 - 移除冗余的中间变量(如price1),直接返回浮点数类型的价格,更适合后续数值计算。
- 添加
else分支处理无效输入,明确返回提示信息,避免默认返回None。
内容的提问来源于stack exchange,提问作者user22823868
相关产品推荐
相关产品推荐

