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

相关推荐
aqi001 小时前
15天学会AI应用开发(十一)从TXT文件构建RAG知识库
人工智能·python·大模型·ai编程·ai应用
帅次1 小时前
Android 高级工程师面试:Java 多线程与并发 近1年高频追问 22 题
android·java·面试
maxmaxma1 小时前
Konva 从入门到实践 - day1
前端
要开心吖ZSH1 小时前
Java事务与MySQL事务的关系及MVCC通俗解析
java·开发语言·mysql·mvcc
放弃 治疗1 小时前
Windows 11系统 最新 Launch4j 安装与使用教程:从 JAR 到 EXE 的完整打包指南
java·jar
火星校尉1 小时前
一场数据基建与消费场景的跨界实验
java·前端·数据库·python·php
Sam09272 小时前
【AI 算法精讲 14】TF-IDF:词频与逆文档频率
人工智能·python·算法·ai
寻道码路2 小时前
LangChain4j Java AI 应用开发实战(二十六):多模型集成策略 —— OpenAI、DeepSeek、阿里百炼混合使用
java·开发语言·人工智能·ai
ch.ju2 小时前
Java Programming Chapter 4——Static code block
java·开发语言