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
相关产品推荐
相关产品推荐

