• 【Python 20】BMR计算器4.0(异常处理)


    1.案例描述

    基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上。

    计算公式:

    BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6.8*年龄)+ 66

    BMR(女) = (9.6*体重kg) + (1.8*身高cm)-(4.7*年龄)+655

    2.0增加功能:根据用户输入BMR参数,计算BMR值,支持持续输入。

    3.0增加功能:用户可以在一行输入所有信息,带单位的信息输出。

    4.0增加功能:处理异常操作

    2.案例分析

    引入异常处理机制,来解决程序运行时的错误。

    try:
        <body>
    except<ErrorType1>:
        <handler1>
    except<ErrorType2>:
        <handler2>
    except:
        <handler0>

    先执行try,存在异常则选择一个最匹配的except执行对应的处理语句,无异常则直接执行try-except后边语句。

    最常见的except类型是IndexError(索引错误),KeyError(键错误),ValueError(值错误),TypeError 传入对象类型与要求的不符合。常见异常汇总参考

    3.上机实验

    """
        作者:梁斌
        功能:BMR计算器
        版本:4.0
        日期:04/08/2017
        3.0 增加功能:用户可以在一行输入所有信息,带单位的信息输出
        4.0 增加功能:处理异常操作
    """
    
    
    def main():
        """
            主函数
        """
        y_or_n = input('是否退出程序(y/n)?')
    
        while y_or_n != 'y':
            # # 性别
            # gender = input('性别:')
            # # print(type(gender))
            #
            # # 体重 (kg)
            # weight = float(input('体重(kg):'))
            # # print(type(weight))
            #
            # # 身高 (cm)
            # height = float(input('身高(cm):'))
            # # print(type(height))
            #
            # # 年龄
            # age = int(input('年龄:'))
            # # print(type(age))
            print('请输入以下信息,用空格分割')
            input_str = input('性别 体重(kg) 身高(cm) 年龄:')
            str_list = input_str.split(' ')
    
            try:
                gender = str_list[0]
                weight = float(str_list[1])
                height = float(str_list[2])
                age = int(str_list[3])
    
                if gender == '':
                    # 男性
                    bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
                elif gender == '':
                    # 女性
                    bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655
                else:
                    bmr = -1
    
                if bmr != -1:
                    print('您的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁'.format(gender, weight, height, age))
                    print('您的基础代谢率:{}大卡'.format(bmr))
                else:
                    print('暂不支持该性别')
            except ValueError:
                print('请输入正确的信息!')
            except IndexError:
                print('输入的信息过少!')
            except:
                print('程序异常!')
    
            print()  # 输出空行
            y_or_n = input('是否退出程序(y/n)?')
    
    
    if __name__ == '__main__':
        main()

    参考文档:

    Python异常及处理方法总结

  • 相关阅读:
    算法基础<七> 加权有向图
    union 分页/group/join 复杂查询(.net core/framework)
    扩展Elasticsearch客户端简化ES查询(.net core/framework)
    对EF Core进行扩展使支持批量操作/复杂查询
    Grpc对象转proto代码工具
    扩展ADO.net实现对象化CRUD(.net core/framework)
    Sublime Text 4 破解笔记
    python三元表达式(三目运算符)的坑
    xaf-常见问题解答
    xaf.blazor中如何开启诊断按钮
  • 原文地址:https://www.cnblogs.com/badboy200800/p/10628455.html
Copyright © 2020-2023  润新知