Python入门-17、18、19、20:数据类型及转换,字符串补充(分割,带单位输出数据),处理异常操作的语句

BMR计算器1.0

案例描述

在这里插入图片描述

案例分析

数值类型及转换

在这里插入图片描述

完整程序及结果

'''
作者:张梦
功能:BMR计算器
版本:1.0
日期:2018.12.10
'''

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

if __name__ == '__main__':

结果:
在这里插入图片描述

BMR计算器2.0

案例描述

在这里插入图片描述

案例分析

  • input里面都是字符串(可以通过type查看字符类型),所以需要转换一下字符类型

在这里插入图片描述
在这里插入图片描述
转换后:
在这里插入图片描述
在这里插入图片描述

  • 持续运行需要加入循环(if虽然也能达到第一次执行程序,可以自动退出程序,但是无法持续运行,只能执行一次程序)
  • 注意:加入循环一定要有跳出循环的语句,防止死循环

完整程序及结果

'''
作者:张梦
功能:BMR计算器
版本:2.0
日期:2018.12.10
'''

'''主函数'''
def main():
    y_or_n = input('是否退出程序(y/n)?')

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

if __name__ == '__main__':
	main()

在这里插入图片描述

  • tips:
    print()里面什么都不写,结果就是输出一行空格,如上图倒数第二行

BMR计算器3.0

案例描述

在这里插入图片描述

案例分析

字符串补充

在这里插入图片描述
https://docs.python.org/3/library/stdtypes.html#str.split

输入一行信息,程序自己取出并计算——字符串分割

下面的语句可以从字符串里查找空格的位置,然后可以取出空格后面的字符,但对于此题,这样一个一个取太麻烦
在这里插入图片描述
所以有了下面的语句,字符串名字.split(),可以取出任何相同分隔符的字符串,下面的例子是用空格分割的字符串。
在这里插入图片描述
取出后,可以看出是以list格式存放的,要哪个元素,取出的方法同字符串。
在这里插入图片描述

输出结果带单位——使用{}占位

在这里插入图片描述
注意:中间不是逗号分开,而是“.”
结果:
在这里插入图片描述
还可以在{}里面加入序号,这样输出就会按你的顺序输出
在这里插入图片描述

完整程序及结果

'''
作者:张梦
功能:BMR计算器
版本:3.0
2.0新增功能:根据用户输入来计算BMR,程序持续运行
3.0新增功能:用户输入所有信息再计算,输出带单位
日期:2018.12.11
'''

'''主函数'''
def main():
    y_or_n = input('是否退出程序(y/n)?')

    while y_or_n != 'y':
        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) + 65
        else:
            bmr = -1

        if bmr != -1:
            print('您的性别:{},体重:{}kg,身高:{}cm,年龄:{}岁'.format(gender, weight, height, age))
            print('基础代谢率: {}大卡'.format(bmr))
        else:
            print('暂不支持该性别')
        print()     # 输出空行
        y_or_n = input('是否退出程序(y/n)?')

if __name__ == '__main__':

在这里插入图片描述

BMR计算器4.0

案例描述

在这里插入图片描述

案例分析

Python语句中的“异常处理机制”

在这里插入图片描述
感觉好像就是if的简化版
异常信息:

  1. 不符合规范的输入

在这里插入图片描述
错误类型:无法进行数值转换在这里插入图片描述

  1. 输入信息过少
    在这里插入图片描述
    错误类型:没有值进行下面的计算
    在这里插入图片描述

完整程序及结果

'''
作者:张梦
功能:BMR计算器
版本:4.0
2.0新增功能:根据用户输入来计算BMR,程序持续运行
3.0新增功能:用户输入所有信息再计算,输出带单位
4.0新增功能:可处理异常操作
日期:2018.12.12
'''

'''主函数'''
def main():
    y_or_n = input('是否退出程序(y/n)?')

    while y_or_n != 'y':
        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) + 65
            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('程序异常!')

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


if __name__ == '__main__':

在这里插入图片描述

小结

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值