(课程相关的所有资料代码,已上传至CSDN,请自行下载
https://download.csdn.net/download/qq_34243930/10764180 )
BMR 计算器 1.0
Python中常用的数值类型
浮点数*整数=浮点数
整数->字符串:str(3)->‘3’
浮点数->字符串:str(3.14)->‘3,14’
注意:float(1)的结果为 1.0 !!!!!!
关于type()函数:
Python支持的数据类型有:int、integer、float
Python不支持char
Python没有char或byte类型来保存单一字符或8位整型。但是可以使用长度为1的字符串表示字符或8位整型。
"""
作者:xpt
功能:BMR计算器
版本:1.0
日期:12/11/2018
"""
def main():
"""
主函数
"""
# 性别
gender = '女'
# 体重 (kg)
weight = 50
# 身高 (cm)
height = 162
# 年龄
age = 20
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('基础代谢率(大卡):', bmr)
else:
print('暂不支持该性别')
if __name__ == '__main__':
main()
• 如何根据用户输入计算BMR?
• 程序持续运行直到用户选择退出
BMR 计算器 2.0–增加功能:根据用户输入计算BMR,程序持续运行
“””
注意:
1、while 后条件没有括号!!!
2、注意循环体里也要在最后让用户输入!!
3、print() # 输出空行
"""
作者:xpt
功能:BMR计算器
版本:2.0
日期:12/11/2018
增加功能:根据用户输入计算BMR,程序持续运行
"""
def main():
"""
主函数
"""
y_or_n=input('是否退出程序(y/n)?:')
while y_or_n == 'n':
# 性别
gender = input('性别:')
# 体重 (kg)
weight = float(input('体重 (kg):'))
# 身高 (cm)
height = float(input('身高 (cm)'))
# 年龄
age = int(input('年龄:'))
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('基础代谢率(大卡):', bmr)
else:
print('暂不支持该性别')
print() # 输出空行
y_or_n = input('是否退出程序(y/n)?:')
if __name__ == '__main__':
main()
• 用户能否将信息在一行内全部输入?
• 能否在输出信息时带单位?
• 如果能,程序将如何修改?
BMR 计算器 3.0–用户可以在一行输入所有信息,带单位的信息输出
字符串操作补充
完整字符串操作:https://blog.csdn.net/qq_34243930/article/details/83748085
字符串分割: https://docs.python.org/3/library/stdtypes.html#str.split
()里放的是要以什么进行分割
关于字符串分割:
法一(复杂、不要用!):
用find函数找空格位置
法二:str.split()函数
输出的是一个列表list
列表元素的取出与数组一样
字符串格式化输出–带单位的信息输出
用{}的格式指定位置信息:
输出多个,format()里用逗号隔开
例如1:
例如2:
注意:标顺序的标号,不能只写几个,要写就要全写!!!!!
我一开始只写了2和1,就报错了
程序代码如下:
代码注意:
1、数值类型的转化
我又又又犯错误了,,,没转化
正解如下:
"""
作者:xpt
功能:BMR计算器
版本:3.0
日期:12/11/2018
增加功能2.0:根据用户输入计算BMR,程序持续运行
增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
"""
def main():
"""
主函数
"""
y_or_n=input('是否退出程序(y/n)?:')
while y_or_n == 'n':
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) + 655
else:
bmr = -1
if bmr != -1:
print('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.format(gender, weight, height, age))
print('基础代谢率:{}大卡'.format(bmr))
else:
print('暂不支持该性别')
print() # 输出空行
y_or_n = input('是否退出程序(y/n)?:')
if __name__ == '__main__':
main()
• 如果用户“不按套路出牌”?程序该如何处理这种情况?
如:用户输入体重为 “七十”
BMR 计算器 4.0–增加功能:处理异常操作
异常处理机制
如:用户输入体重为 “七十”
报错如下:
若处理代码如下会继续报错:
正确处理代码如下:
"""
作者:xpt
功能:BMR计算器
版本:4.0
日期:12/11/2018
增加功能2.0:根据用户输入计算BMR,程序持续运行
增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
增加功能4.0:处理异常操作
"""
def main():
"""
主函数
"""
y_or_n=input('是否退出程序(y/n)?:')
while y_or_n == 'n':
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('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.format(gender, weight, height, age))
print('基础代谢率:{}大卡'.format(bmr))
else:
print('暂不支持该性别')
except ValueError:
print('请输入正确的信息!')
print() # 输出空行
y_or_n = input('是否退出程序(y/n)?:')
if __name__ == '__main__':
main()
思考还会产生的错误!
还有一种办法
直接except:
包含所有错误
代码如下:
"""
作者:xpt
功能:BMR计算器
版本:4.0
日期:12/11/2018
增加功能2.0:根据用户输入计算BMR,程序持续运行
增加功能3.0:用户可以在一行输入所有信息,带单位的信息输出
增加功能4.0:处理异常操作
"""
def main():
"""
主函数
"""
y_or_n=input('是否退出程序(y/n)?:')
while y_or_n == 'n':
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('您的性别:{0};身高:{2}厘米;体重:{1}公斤;年龄:{3}岁'.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__':
main()
课后练习:
• 将程序模块化
• BMR计算部分封装到函数中
NEXT:
• 目前的处理操作都是针对单个或几个数据/元素
• 下个案例将会介绍使用Python中的集合对一系列数据进行操作