目的是解决用户的非正常输入。
与Java类似,使用try,except,finally语句;
try包含的语句是可能出现错误的程序片段;
except跟着可能出现的异常,包含的是捕捉到对应异常的处理片段;
finally包含的是无论是否出现异常都注定执行的内容。
程序代码:
"""--计算BMR,人体代谢率指数--一行输入所有结果,然后带单位输出--格式化输出+字符串分割++增加异常处理!!!
"""def cal_BMR(gender, height, weight, age):"""计算BMR函数BMR:基础代谢率"""bmr = -1if gender == '男':bmr = weight*13.7+height*5.0-age*6.8+6elif gender == '女':bmr = weight*9.6+height*1.8-age*4.7+655return bmrif __name__ == '__main__':continue_cal = 'y'while(continue_cal=='y'):str_all_info = input("请输入以下信息(并以空格分隔):性别(男/女)、体重(kg)、身高(cm)、年龄:")# 将字符串分割list_info = str_all_info.split(" ")# 可能出现非正常输入的无法转换try:gender = list_info[0]weight = eval(list_info[1])height = eval(list_info[2])age = eval(list_info[3])bmr = cal_BMR(gender, height, weight, age)# 格式化输出print("您的性别为:{},体重为:{}kg,身高为:{}cm,年龄为:{}岁".format(gender, weight, height, age))print("基础代谢率:{}大卡".format(bmr))except ValueError:print("请重新输入正确的数据~")except IndexError:print("输入的值不全,请重新输入~")except NameError:print("请重新输入正确的数据~")except:print("程序异常!请重新输入~")finally:continue_cal = input('是否继续,继续则y,否则n')
运行结果:
Y:Python Y:/PythonWorkspace/lect04/CalBMR4.py
请输入以下信息(并以空格分隔):性别(男/女)、体重(kg)、身高(cm)、年龄:男 七十 一米七 二十三
请重新输入正确的数据~
是否继续,继续则y,否则nnProcess finished with exit code 0
正确表述:
错误表述:
异常对应:
ValueError:向内置函数中输入了一个类型正确值不正确的对象
KeyError:字典中找不到某个键;
输入对象类型有误;
序列下标超出了范围。
本文发布于:2024-01-31 10:27:05,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170666802727856.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |