BMR计算器2——python第三课(字符串分割,格式化输出,异常处理)

一、在一行输入所有信息,带单位的信息输出

(一)、

  1. 字符串分割:str.split()参数为输入时的分隔符
  2. 格式化输出:str.format()例:”{}厘米,{}千克”.format(175,75)  引号后面是点

{}内可以填写参数位置,如果没有位置信息,按顺序填写,参数可以重复使用

 

(二)、

  1. 运行结果

 

  2.代码

 

'''
    作者:兰兰兰
    功能:实现bmr计算器
    版本: 3.0
    日期:02/11/2018
    新增功能:根据用户输入计算BMR,程序持续进行
    新增功能:一次输入所有信息,并带单位输出信息
'''

def main():
    '''
        主函数
    '''

    y_or_no = input('是否退出程序(y or n)?')

    while y_or_no != 'y':

        print('请输入一下信息,请用空格分割')
        input_str = input('性别,年龄,身高(cm),体重(kg):')
        str_list = input_str.split(' ')
        gender = str_list[0]
        age = int(str_list[1])
        height = float(str_list[2])
        weight = float(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) + 65
        else:
            BMR = -1
        if BMR != -1:
            print('您的性别:{},身高:{}cm,体重:{}kg,年龄:{}'.format(gender,height,
                                                weight,age))
            print('基础代谢率:{}(大卡)'.format(BMR))
        else:
            print('暂不支持该性别!')
        print('--------------------分割线--------------------')
        y_or_no = input('是否退出程序(y or n)?')

    else:
        print('程序已退出!')


if __name__ == '__main__':
    main()

 

 

 

四、处理异常

1. 异常处理机制

try:                        当遇到try语句,先尝试执行包含的代码块

<body>                 如果没有发生错误,则执行try-except后面的语句

Except <ErrorType1>:          已知可能错误的错误名

<handler1>              错误发生后执行的语句

Except <ErrorType2>:          

<handler21>   

Except:                    未知错误

 <handler0>         

2.运行结果

 

  1. 代码

'''
    作者:兰兰兰
    功能:实现bmr计算器
    版本: 3.0
    日期:02/11/2018
    新增功能:根据用户输入计算BMR,程序持续进行
    新增功能:一次输入所有信息,并带单位输出信息
    新增功能:处理异常操作
'''

def main():
    '''
        主函数
    '''

    y_or_no = input('是否退出程序(y or n)?')

    while y_or_no != 'y':

        print('请输入一下信息,请用空格分割')
        input_str = input('性别,年龄,身高(cm),体重(kg):')
        str_list = input_str.split(' ')

        try:
            gender = str_list[0]
            age = int(str_list[1])
            height = float(str_list[2])
            weight = float(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) + 65
            else:
                BMR = -1
            if BMR != -1:
                print('您的性别:{},身高:{}cm,体重:{}kg,年龄:{}'.format(gender,height,
                                                    weight,age))
                print('基础代谢率:{}(大卡)'.format(BMR))
            else:
                print('暂不支持该性别!')
        except IndexError:
            print('请输入所有信息!')
        except ValueError:
            print('请输入正确格式的信息!')
        except:
            print('程序异常!')

        print('--------------------分割线--------------------')
        y_or_no = input('是否退出程序(y or n)?')

    else:
        print('程序已退出!')


if __name__ == '__main__':
    main()

原文地址:https://www.cnblogs.com/lanzhiyuan/p/8442876.html