大家好,我是白菜胡萝丸子
人生苦短,Python当歌
项目导入
版本4.0:如果用户把信息输入错误了怎么办——处理异常操作
项目分析—理清思路
- 分析问题:分析问题的计算部分
- 明确问题:划分问题的输入、处理和输出部分(IPO)
- 设计算法:计算部分的核心
请尝试绘制流程图
知识点学习–万丈高楼平地起
●引入异常处理机制可以用来解决程序运行时的错误
语法
#当Python遇到try语句先尝试执行try包含的代码块
try:<body> # 当Python遇到try语句先尝试执行try包含的代码块
except <ErrorTlype1>:<handler1> # 如果没有错误发生 ,执行try-except后面的语句
except <ErrType2> :<handler2> #如果发生错误, Python寻找一 个符合该错误的异常语句,然后执行相应的except的处理代码
except:<handler0>
上机编程–动动手,让程序运行起来
参照代码
"""
作者:白菜胡萝丸子
版本4.0 异常捕获 try except
"""def BMR_women(weight,height,age):BMR_women = 9.6 * weight + 1.8 * height - 4.7 * age + 655return BMR_women
def BMR_men(weight,height,age):BMR_men = 13.7 * weight + 5.0 * height - 6.8 * age + 66return BMR_men
def main():y_n = input('您好,您是否选择运行程序,是-y,否-n:')i = 0while y_n == 'y':print('输入的基本信息用逗号隔开')input_str = input('性别,身高,体重,年龄:')input_str_list = input_str.split(',')try:gender = input_str_list[0]height = float(input_str_list[1])weight = float(input_str_list[2])age = int(input_str_list[3])if gender == '男':bmr = BMR_men(weight, height, age)print('这位{}cm,{}kg,{}岁的{}士的BMR为{}'.format(height, weight, age, gender, bmr))elif gender == '女':bmr = BMR_women(weight, height, age)print('这位{}cm,{}kg,{}岁的{}士的BMR为{}'.format(height, weight, age, gender, bmr))else:print('暂不支持计算')except ValueError:print('对不起,您输入的数据不符合格式要求')except IndexError:print('对不起,您输入的信息过少,无法完成基础代谢率的计算')except:print('对不起,程序异常,暂时无法发现错误,请重新输入数据')i = i + 1print('这是程序的第', i, '次运行')print('-----------------------')y_n = input('您好,您是否选择运行程序,是-y,否-n')print('对不起,程序跳出')if __name__ == '__main__':main()
执行结果
您好,您是否选择运行程序,是-y,否-n:y
输入的基本信息用逗号隔开
性别,身高,体重,年龄:男,180,68,23
这位180.0cm,68.0kg,23岁的男士的BMR为1741.1999999999998
这是程序的第 1 次运行
-----------------------
您好,您是否选择运行程序,是-y,否-nn
对不起,程序跳出Process finished with exit code 0
更上一层楼–让程序进化一点点
- 下一个案例为52周存钱挑战,持续更新中…