Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制

(课程相关的所有资料代码,已上传至CSDN,请自行下载
https://download.csdn.net/download/qq_34243930/10764180
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

BMR 计算器 1.0

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

Python中常用的数值类型

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
浮点数*整数=浮点数
整数->字符串:str(3)->‘3’
浮点数->字符串:str(3.14)->‘3,14’
注意:float(1)的结果为 1.0 !!!!!!
关于type()函数:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
Python支持的数据类型有:int、integer、float
Python不支持char
Python没有char或byte类型来保存单一字符或8位整型。但是可以使用长度为1的字符串表示字符或8位整型。

"""
    作者:xpt
    功能:BMR计算器
    版本:1.0
    日期:12/11/2018
"""


def main():
    """
        主函数
    """
    # 性别
    gender = '女'

    # 体重 (kg)
    weight = 50

    # 身高 (cm)
    height = 162

    # 年龄
    age = 20

    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('暂不支持该性别')


if __name__ == '__main__':
    main()

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

• 如何根据用户输入计算BMR?
• 程序持续运行直到用户选择退出

BMR 计算器 2.0–增加功能:根据用户输入计算BMR,程序持续运行

“””
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

注意:
1、while 后条件没有括号!!!
2、注意循环体里也要在最后让用户输入!!
3、print() # 输出空行

"""
    作者:xpt
    功能:BMR计算器
    版本:2.0
    日期:12/11/2018
    增加功能:根据用户输入计算BMR,程序持续运行
"""


def main():
    """
        主函数
    """
    y_or_n=input('是否退出程序(y/n)?:')
    while y_or_n == 'n':
        # 性别
        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)?:')


if __name__ == '__main__':
    main()

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
• 用户能否将信息在一行内全部输入?
• 能否在输出信息时带单位?
• 如果能,程序将如何修改?

BMR 计算器 3.0–用户可以在一行输入所有信息,带单位的信息输出

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

字符串操作补充

完整字符串操作:https://blog.csdn.net/qq_34243930/article/details/83748085
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

字符串分割: https://docs.python.org/3/library/stdtypes.html#str.split

()里放的是要以什么进行分割

关于字符串分割:
法一(复杂、不要用!):
用find函数找空格位置
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
法二:str.split()函数
输出的是一个列表list
列表元素的取出与数组一样
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

字符串格式化输出–带单位的信息输出

用{}的格式指定位置信息:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
输出多个,format()里用逗号隔开
例如1:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
例如2:
注意:标顺序的标号,不能只写几个,要写就要全写!!!!!
我一开始只写了2和1,就报错了
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

程序代码如下:
代码注意:
1、数值类型的转化
我又又又犯错误了,,,没转化
正解如下:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

"""
    作者:xpt
    功能:BMR计算器
    版本:3.0
    日期:12/11/2018
    增加功能2.0:根据用户输入计算BMR,程序持续运行
    增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
"""


def main():
    """
        主函数
    """
    y_or_n=input('是否退出程序(y/n)?:')
    while y_or_n == 'n':
        print('请输入以下信息,用空格分割')
        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('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.format(gender, weight, height, age))
            print('基础代谢率:{}大卡'.format(bmr))
        else:
            print('暂不支持该性别')
        print() # 输出空行
        y_or_n = input('是否退出程序(y/n)?:')


if __name__ == '__main__':
    main()

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

• 如果用户“不按套路出牌”?程序该如何处理这种情况?
如:用户输入体重为 “七十”

BMR 计算器 4.0–增加功能:处理异常操作

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

异常处理机制

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

如:用户输入体重为 “七十”

报错如下:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
若处理代码如下会继续报错:
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
正确处理代码如下:


"""
    作者:xpt
    功能:BMR计算器
    版本:4.0
    日期:12/11/2018
    增加功能2.0:根据用户输入计算BMR,程序持续运行
    增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
    增加功能4.0:处理异常操作
"""


def main():
    """
        主函数
    """
    y_or_n=input('是否退出程序(y/n)?:')
    while y_or_n == 'n':
        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('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.format(gender, weight, height, age))
                print('基础代谢率:{}大卡'.format(bmr))
            else:
                print('暂不支持该性别')

        except ValueError:
            print('请输入正确的信息!')

        print() # 输出空行
        y_or_n = input('是否退出程序(y/n)?:')


if __name__ == '__main__':
    main()

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

思考还会产生的错误!

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》
还有一种办法
直接except:
包含所有错误

《Python入门基础-六、案例3 基础代谢率(BMR)计算器 #Python中常用的数值类型#字符串分割与格式化输出#异常处理机制》

代码如下:


"""
    作者:xpt
    功能:BMR计算器
    版本:4.0
    日期:12/11/2018
    增加功能2.0:根据用户输入计算BMR,程序持续运行
    增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
    增加功能4.0:处理异常操作
"""


def main():
    """
        主函数
    """
    y_or_n=input('是否退出程序(y/n)?:')
    while y_or_n == 'n':
        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('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.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()

课后练习:
• 将程序模块化
• BMR计算部分封装到函数中

NEXT:
• 目前的处理操作都是针对单个或几个数据/元素
• 下个案例将会介绍使用Python中的集合对一系列数据进行操作

    原文作者:夏普通
    原文地址: https://blog.csdn.net/qq_34243930/article/details/83998685
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞