python_let`s try it 6___BMI计算器

写一个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

相关推荐
我命由我123454 小时前
CesiumJS 笔记 - 获取容器中心点、Cartesian3 clone 方法、修改 Cartesian3 对象的高度
前端·javascript·css·前端框架·html·html5·js
从零开始学习人工智能5 小时前
【踩坑实录】WSL2 解决 onnxruntime\-gpu ImportError: libcudart\.so\.13 无 CUDA13 运行库问题
python
Hopebearer_5 小时前
页面突然只剩 DOM?一次静态资源版本错配排查
前端·部署
东风破_6 小时前
ESLint 是什么?为什么你的项目需要它?
前端·后端·代码规范
嘻哈∠※6 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
卷无止境6 小时前
在 awesome-fastapi 里,哪些库值得一看?
后端·python
zhanghaha13147 小时前
Python进阶教程:6_JSON 数据解析 —— 新手完全指南
开发语言·python·json
Python私教7 小时前
API 输出模型怎么设计:从 model_dump() 到显式展示层
python·fastapi
白狐_7987 小时前
408数据结构第8章:排序②——性质对比秒杀、场景选择与外部排序
java·数据结构·算法
圣殿骑士-Khtangc7 小时前
Go字符串高效拼接性能对比与底层原理分析
服务器·前端·golang