写一个BMI计算器
BMI计算器
def bmi_calculator():
"""
BMI计算器
输入:身高(米)和体重(公斤)
输出:BMI值和健康建议
BMI = 体重 / (身高 ** 2)
"""
# 你的代码
pass
#=====写一个BMI计算器=====
def bmi_calculator():
height=float(input("请输入你的身高: (米)"))
weight=float(input("请输入你的体重: (公斤)"))
BMI=weight/(height**2)
if BMI<18.5:
print("体重过低")
elif 18.5<=BMI<=23.9:
print("正常范围")
elif 24.0<=BMI<=27.9:
print("超重")
elif BMI>=28.0:
print("肥胖")
bmi_calculator()
问题点:
1.边界值处理(0或负数)
如果用户输入0或负数,程序虽然不会报错,但会给出体重过低或正常范围这种不合理的结论
加上校验
python
#=====写一个BMI计算器=====
def bmi_calculator():
height=float(input("请输入你的身高: (米)"))
weight=float(input("请输入你的体重: (公斤)"))
#输入校验
if height<=0 or weight<=0:
print("身高和体重必须为正数,请重新输入")
return
BMI=weight/(height**2)
print(f"你的BMI值是{BMI}")
if BMI<18.5:
print("体重过低")
elif 18.5<=BMI<=23.9:
print("正常范围")
elif 24.0<=BMI<=27.9:
print("超重")
elif BMI>=28.0:
print("肥胖")
bmi_calculator()
问题点:return退出函数之后没有重新输入的提示
解决:用While循环包住输入
python
#=====写一个BMI计算器=====
def bmi_calculator():
while True:
height=float(input("请输入你的身高: (米)"))
weight=float(input("请输入你的体重: (公斤)"))
#输入校验
if height<=0 or weight<=0:
print("身高和体重必须为正数,请重新输入")
continue
BMI=weight/(height**2)
print(f"你的BMI值是{BMI}")
if BMI<18.5:
print("体重过低")
elif 18.5<=BMI<=23.9:
print("正常范围")
elif 24.0<=BMI<=27.9:
print("超重")
elif BMI>=28.0:
print("肥胖")
break#计算完成后,退出循环
bmi_calculator()
注意这里再输入校验时使用的continue,上面的例子是return