前面的3节课已经将BMR计算讲完,这一节主要讲解一下在遇到异常情况怎么处理?
下面是异常处理机制:
--引入异常处理机制可以用来解决程序运行时的错误
语法:
try:
<bady>
except<ErrorType1>:
<handler1>
except<ErrorType2>:
<handler2>
except:
<handler()>
当Python遇到try语句,先尝试执行try包含的代码块,这部分代码块是可能出现错误的代码块。
如果没有错误发生,执行try-except后面的语句。
如果发生错误,Python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码。
"""
作者:lanxingbudui
功能:BMR计算器
版本:4.0
日期:20190303
新增功能:根据用户输入计算BMR;程序持续运行
新增功能:用户可以在一行输入所有信息,带单位的信息输出
新增功能:对异常情况处理
"""
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) + 655
else:
bmr = -1
if bmr != -1:
print('您的性别:{},体重:{}kg,身高:{}cm,年龄:{}岁'.format(gender, weight, height, age))
print('您的基础代谢率BMR:{} 大卡'.format(bmr))
else:
print('该版本暂时不支持改性别!')
except ValueError:
print('请输入正确的信息!')
except IndexError:
print('输入信息过少!')
except:
print('程序异常!')
print()
y_or_n = input('是否退出程序(y/n)?')
if __name__ == '__main__':
main()