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

相关推荐
spencer_tseng13 分钟前
[j2cache ehcache.xml]/tmp/.ehcache-diskstore.lock (Permission denied)
xml·linux·python·ehcache·[j2cache
葡萄城技术团队26 分钟前
一键触发工作表中所有异步函数:用依赖单元格刷新 SpreadJS 公式
前端
java_nnnn28 分钟前
文件操作和IO
java
lsylalalala30 分钟前
多线程(4)
java·开发语言·多线程
Bigger31 分钟前
谁动了我的 URL?——记一次微前端"灵异 Bug"的排查实录
前端·ai编程·vue-router
JavaGuide39 分钟前
轻量开源版 IDEA 来了!
前端·后端
梦想不只是梦与想1 小时前
Python Web 框架:FastAPI
python·fastapi·web框架
张洪权1 小时前
nest.js websocket 群聊----私聊功能
前端·nestjs
流光D1 小时前
AI Era: Building Web Sites and Configuring Nginx Reverse Proxy Process
前端·人工智能·nginx
sakidd1 小时前
VS Code 的 AI Chat 现在已经这么能干了?
前端