基础代谢率(简称:BMR)是指:我们在安静状态下消耗的最低热量,人的其他活动都建立在这个基础上。
计算公式:
BMR(男) = (13.7体重(kg)) + (5.0身高(cm)) - (6.8*年龄))+ 66
BMR(女) = (9.6体重(kg)) + (1.8身高(cm)) - (4.7*年龄) + 655
目前,只是简单的计算,不做任何的变化。简单输入变量,通过if语句判断得到输出结果。
1.0
def main(): global bmr gen = "女" weight = 55 height = 170 age = 16 if gen == "男": bmr = (13.7 * weight) + (5.0 *height )- (6.8 * age + 66) elif gen == "女": bmr = (9.6 * weight) + (3.8 *height )- (4.7 * age + 655) print(bmr) if __name__ == '__main__': main()
Python中常用的数值类型:
整数类型,与数学中的整数概念一致。如:100、-300
浮点数类型,带有小数点及小数的数值。如:0.0、3.14
类型转换
整数-->浮点数 float(4)->4.0
浮点数-->整数 int(3.14)-->3,只会保留整数部分
字符串-->整数、浮点数 int('4')->4 ,float('3.14')->3.14
如何判断类型?type()函数
2.0
"""" 新增功能:根据用户输入计算BMR;程序持续运行 """" def main(): y_or_n = input("是否退出程序(y/n)?") while y_or_n != 'y': gender=input("男or女:") weight=float(input('输入体重')) height=float(input('输入身高')) age=int(input('输入年龄')) if gender=='男': bmr=(13.7*weight)+(5.0*height)-(6.8*age)+66 print('bmr:',bmr) elif gender=='女': bmr=(9.6*weight)+(1.8*height)-(4.7*age)+655 else: bmr = -1 if bmr != -1: print('基础代谢率(大卡):',bmr) else: print('暂不支持该性别') print() y_or_n = input("是否退出程序(y/n)?") if __name__ =="__main__": main()
print(type(gender))
print(type(weight))
print(type(height))
print(type(age))
这些语句的目的:可以查看参数的字符类型,实际可以不写到程序中。
循环运行程序,用到了while循环语句。
3.0
2.0版本通过用户输入参数,计算BMR,但是每一个参数都是先提示了再输入。现在用户想在一行中将参数全部输入完,点击执行立刻可以得到计算结果。
那么,3.0就是为了解决一行输入参数,以及友好型的带单位的信息输出。
""" 新增功能:用户可以在一行输入所有信息,带单位的信息输出 """ 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 print('bmr:',bmr) elif gender=='女': bmr=(9.6*weight)+(1.8*height)-(4.7*age)+655 else: bmr = -1 if bmr != -1: print("您的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁".format(gender,weight,height,age)) print('您的基础代谢率:{}大卡'.format(bmr)) else: print('暂不支持该性别') print() y_or_n = input("是否退出程序(y/n)?") if __name__ =="__main__": main()
将一行字符串,分割并且分别赋值给不同的参数,用到str.split()和str[],如下图所示:
说明2:在输出结果时,将得到的结果字符串格式化输出,使用{}占位。
str.format() 如:‘{}公斤,{}厘米’.format(70, 175)
重复输出时可以使用数字标:‘{0}公斤,{1}厘米,{1}厘米’.format(70, 175)
得到的结果为:70公斤,175厘米,175厘米
4.0
异常处理机制:
--引入异常处理机制可以用来解决程序运行时的错误
语法:
当Python遇到try语句,先尝试执行try包含的代码块,这部分代码块是可能出现错误的代码块。 如果没有错误发生,执行try-except后面的语句。 如果发生错误,Python寻找一个符合该错误的异常语句,然后执行相应的except的处理代码。
""" 新增功能:对异常情况处理 """ 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()