You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python函数输入任意数字均返回NoneType类型None值的原因排查

代码返回None的原因

核心问题是流程控制语句位置错误,导致函数没有执行到return语句就提前结束运行,具体问题点如下:

  • 你在try代码块中成功把用户输入转为整数后,立刻执行了break语句,这个语句会直接跳出最外层的while True循环。而你的return number_of_pizzas是写在while True循环体内部的,一旦跳出循环,函数就会直接运行到末尾,Python中没有显式返回值的函数会默认返回None,这就是你无论输入什么有效数字都拿到None的根本原因。
  • 原代码的范围校验逻辑存在额外bug:
    • 大小判断用了独立的while循环,但循环内打印完提示就直接break,既不会让用户重新输入,逻辑也没有接入正确的输入流程
    • 如果用户输入非数字内容触发ValueError,number_of_pizzas变量根本不会被赋值,后续的大小判断代码访问这个变量时会直接触发NameError报错
修正后的可运行代码

调整控制流逻辑:输入非数字时提示后重输,输入数字但超出范围时提示后重输,只有输入完全符合1-5的区间要求时,才返回对应的数值:

max_pizzas = 5
min_pizzas = 1

def get_number_of_pizzas():
  while True:
    try:
       number_of_pizzas = int(input("How many pizzas would you like?"))
    except ValueError:
      print("Please enter a valid number.")
      continue
    # 校验数值范围
    if number_of_pizzas > max_pizzas:
      print(f"We cannot deliver more than {max_pizzas} pizzas.")
      continue
    if number_of_pizzas < min_pizzas:
      print("Why are you here if you're not going to order?")
      continue
    # 所有校验通过,返回结果
    return number_of_pizzas
    
number_of_pizzas = get_number_of_pizzas()
print(number_of_pizzas)

内容的提问来源于stack exchange,提问作者Snoorlacks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 06:42:18