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

Python计算BMI代码输出中间出现None的原因求解

问题根本原因

Python 中的print()函数仅负责将内容输出到控制台,本身无有效返回值,默认返回None。
你的问题代码中这一行存在逻辑错误:

bmi_print = print(f"Your BMI is {bmi}.")

这行代码执行时会先把Your BMI is x.打印到控制台,随后因为print()返回None,变量bmi_print最终被赋值为None。
后续if分支的打印语句中你直接引用了bmi_print变量拼接字符串,所以输出内容里就会出现None, You are y的内容,和你观察到的输出现象完全吻合。

补充说明

你注释中给出的可运行写法,是直接把BMI值拼入最终输出字符串,没有对print()的返回值做赋值操作,自然不会出现None的问题。
如果希望复用BMI相关的字符串,可以先把字符串内容赋值给变量,再执行打印操作,示例如下:

height = float(input("enter your height in m: "))
weight = float(input("enter your weight in kg: "))

bmi = round(weight / height **2)
# 先存字符串,再打印
bmi_str = f"Your BMI is {bmi}."
print(bmi_str)

if bmi <= 18.5:
  print(f"{bmi_str} You are underweight.")
elif bmi <= 25:
  print(f"{bmi_str} You are a normal weight.")
elif bmi <= 30:
  print(f"{bmi_str} You are slightly overweight.")
elif bmi <= 35:
  print(f"{bmi_str} You are obese.")
else:
  print(f"{bmi_str} You are clinically obese.")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 00:24:03