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的简化版
异常信息:
- 不符合规范的输入
错误类型:无法进行数值转换
- 输入信息过少
错误类型:没有值进行下面的计算
完整程序及结果
'''
作者:张梦
功能: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__':