美文网首页
案例(3):BMR计算器

案例(3):BMR计算器

作者: hwang_zhic | 来源:发表于2019-02-12 16:20 被阅读0次

    本章通过BMR计算器的4个案例来进行学习基础的Python程序

    案例简述

    基础代谢率: 我们在安静状态下(通常为静卧状态)小号的最低热量,人的其他活动都建立在这个基础上。计算公式如下:
    BMR(男)=(13.7体重(kg))+(5.0身高(cm))-(6.8年龄)+66
    BMR(女)=(9.6
    体重(kg))+(1.8身高(cm))-( 4.7年龄)+655

    v1.0

    本节简单的写个基础BMR计算器,通过给定的参数,接着判断性别后代入各自的公式直接得出BMR的值,然后输出结果。
    知识点:
    1.判断方法:if-else语句的使用
    2.数据类型:
    (1)整数类型,与数学中的整数概念一致;如:100, -250
    (2)浮点数类型,带有小数点及小数的数值;如:0.0, -3.14, 3.4e-3 (科学计数法)
    3.类型转换
    (1)整数->浮点数,float(4) -> 4.0
    (2)浮点数->整数,int(3.14)->3,只会保留整数部分
    (3)字符串->浮点数, float/eval(‘3.14’)->3.14
    (4)字符串->整数,int(‘3’) ->3 == eval(‘3’) ->3
    4.type()函数可以判断数据类型
    具体代码如下:

    PS:输出时可以对没有结果的情况给出不支持提示

    def main():
        """
            主函数
        """
        # 性别
        gender = '男'
        # 体重(kg)
        weight = 60
        # 身高(cm)
        height = 170
        # 年龄
        age = 40
        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("基础代谢率:", bmr)
        else:
            print("暂不支持该性别")
    

    v2.0

    在v1.0的基础上,该案例通过input()函数来支持根据用户输入计算BMR,使用while语句来使程序持续运行。开始和结束循环都可以根据输入实现。PS:input()获得的是字符串类型,需要转换成整数或浮点型才能计算。
    知识点:
    1.input()函数可以得到输入数据;例子:data = input(“请输入数据:”)
    2.while循环语句,当符合条件时进入并执行循环体,否则跳出循环;例子:while a == 1: 循环体
    具体代码:

    # 是否循环程序
        y_or_n = input("是否退出程序(y/n)")
    
        while y_or_n != 'y':
            # 性别
            gender = input("请输入性别:")
            # 体重(kg)
            weight = float(input("请输入体重(kg):"))
            # 身高(cm)
            height = float(input("请输入身高(cm):"))
            # 年龄
            age = int(input("请输入年龄:"))
            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("基础代谢率:", bmr)
            else:
                print("暂不支持该性别")
            print("*******************************")
            y_or_n = input("是否退出程序(y/n)")
    
        print("程序已退出!")
    

    v3.0

    在v2.0的基础上进行修改,用户可以在一行输入所有信息,带单位的信息输出。一行输入所有信息通过字符串分str.split()函数达到效果。带单位信息输出通过str.format()函数。效果分别如下图所示: str.split()效果图
    str.format()效果图

    知识点:
    1.字符串分割,str.split(), 例子: str_list = input_str.split(" ") # 依据空格分割
    2.字符串格式化输出,使用{}占位:str.format();例子:‘{}公斤, {}厘米’.format(70, 175)
    具体代码:

             # 一行输入数据
            input_str = input("请依次输入性别、体重(kg)、身高(cm)、年龄(空格隔开):")
            # 获取数据,依据空格分割
            str_list = input_str.split(" ")
            # 性别
            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("您的性别:{},体重:{}kg,身高:{}cm,年龄:{}岁".format(gender, weight, height, age))
                print("您的基础代谢率:{}卡路里".format(bmr))
    

    v4.0

    在v3.0的基础上,新增处理异常操作。方法使用try-except语句实现。
    知识点:

    1.异常处理机制及语法 语法
    2.常用几个错误类型:
    (1)序列下标超出了范围:IndexError

    (2)字典中找不到某个键:KeyError
    (3)输入对象类型有误:TypeError
    (4)序列下标超出了范围:IndexError

    具体代码:

    # 一行输入数据
            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("您的性别:{},体重:{}kg,身高:{}cm,年龄:{}岁".format(gender, weight, height,           age))
                    print("您的基础代谢率:{}卡路里".format(bmr))
                else:
                    print("暂不支持该性别")
            except ValueError:
                print("请输入正确的信息!")
            except IndexError:
                print("输入信息较少!")
            except:
                print("程序异常!")
    ```序列下标超出了范围:IndexError
    # 小结
    ![小结](https://img.haomeiwen.com/i13541328/0f2d34cd8b6a94fe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    
    完整代码查看[码云](https://gitee.com/hwang_zc/Python_learn1/tree/master/BMR)

    相关文章

      网友评论

          本文标题:案例(3):BMR计算器

          本文链接:https://www.haomeiwen.com/subject/qlrceqtx.html