每天30min学习python—RBM计算器
目录
1.0 实现功能
- 计算基础代谢率
知识点:计算公式
-
BMR(男) = (13.7 *体重(kg)) + (5.0 * 身高(cm))- (6.8 *年龄) + 66
-
BMR(女) = (9.6 *体重(kg)) + (1.8 * 身高(cm))- (4.7 *年龄) + 655
-
常用数值类型
- 整型int()
- 浮点型float()
代码区:
"""
作者:Troublemaker
功能:BRM计算器
版本:1.0
日期:2019/9/17 21:19
脚本:1.0.py
"""
def main():
"""
主函数
"""
print("请输入你的体重(KG),身高(cm),年龄,性别(输完一个按回车)")
user_input_weight = float(input())
user_input_height = float(input())
user_input_age = int(input())
user_input_gender = input("men or women")
# 判断并计算RMB的值
if user_input_gender == "men":
rbm = (13.7 * user_input_weight) + (5.0 * user_input_height) - (6.8 * user_input_age) + 66
elif user_input_gender == "women":
rbm = (9.6 * user_input_weight) + (1.8 * user_input_height) - (4.7 * user_input_age) + 655
else:
rbm = 1
# 根据计算的PBM值,再进行相应的输出
if rbm != 1:
print("您的性别为{},体重为{}kg,身高为{}cm,年龄为{}岁,RMB为{}"
.format(user_input_gender, user_input_weight, user_input_height, user_input_age, rbm))
else:
print("对不起,您输入的信息有误")
if __name__ == "__main__":
main()
2.0+3.0 实现功能
- RMB计算器
- 2.0新增:根据程序输入计算RMB,程序持续运行
- 3.0新增:用户可以在一行输入所有的信息,输出的时候带单位
知识点:
- 针对2.0 利用while循环,确保程序在用户想要运行的时候永不停止
- 针对3.0 对字符串进行操作str.split(),str.format()
字符串分割
- str.split(sep=None,maxsplit=-1)[n]
- sep是一个界定符,默认为空,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等会用进行分隔。
- maxsplit默认为-1,即分割所有,maxsplit可以通俗的理解为分隔次数,假如maxsplit=1,一个str被分割了一次,得到的元素为maxsplit + 1 个(2个)。
- [n] 表示取第n片
示例代码:
a="1,2,3,4" # 假设a为做左边这个字符串
a.split() # 用split进行分割,都为默认值(默认里没有逗号)
Out[3]: ['1,2,3,4'] #
type(a.split())
Out[4]: list # 分隔后的类型为list型
a.split(' ') # 用空格进行分隔,由于字符串中没有空格,
Out[5]: ['1,2,3,4']
a.split(',') # 用逗号进行分隔,由于字符串中没有空格,
Out[6]: ['1', '2', '3', '4'] # 即全部分隔(这里的逗号只是表明,分成了4份)
a.split(',', 1) # 此时maxsplit=1,分隔后的元素为2
Out[11]: ['1', '2,3,4']
a.split(',', 1)[0] # 取list中第一个元素
Out[12]: '1'
a.split(',', 1)[1] # 取list中第一个元素
Out[13]: '2,3,4'
字符串格式化输出,使用{}占位
- str.format()
示例代码:
"{}kg,{}cm".format(70,175) # 占位符{}中没有索引,则按顺序
Out[2]: '70kg,175cm'
"{0}kg,{1}cm,{0}kg,{0}kg,{1}cm".format(70,175)
# 占位符中有索引,则按对应索引顺序
Out[3]: '70kg,175cm,70kg,70kg,175cm'
代码区:
"""
作者:Troublemaker
功能:BRM计算器
版本:2.0+3.0
日期:2019/9/19 20:11
脚本:2.0_and_3.0.py
2.0新增:根据程序输入计算RMB,程序持续运行
3.0新增:用户可以在一行输入所有的信息,输出的时候带单位
"""
def main():
"""
主函数
"""
print("请按顺序输入你的体重(KG),身高(cm),年龄,性别(输入'men'or'women')")
print("注意:用空格进行分隔,且不带单位")
print("当输入:'quit'时程序退出")
input_msg = input("请开始输入:")
# while 循环
while input_msg != 'quit':
# 用空格对str进行分割
split_msg = input_msg.split(" ")
# 第一个元素为体重
user_input_weight = float(split_msg[0])
# 第二个元素为身高
user_input_height = float(split_msg[1])
# 第三个元素为年龄
user_input_age = int(split_msg[2])
# 第四个元素为性别
user_input_gender = split_msg[3]
# 判断并计算RMB的值
if user_input_gender == "men":
rbm = (13.7 * user_input_weight) + (5.0 * user_input_height) - (6.8 * user_input_age) + 66
elif user_input_gender == "women":
rbm = (9.6 * user_input_weight) + (1.8 * user_input_height) - (4.7 * user_input_age) + 655
else:
rbm = 1
# 根据计算的PBM值,再进行相应的输出
if rbm != 1:
print("您的性别为{},体重为{}kg,身高为{}cm,年龄为{}岁,RMB为{}"
.format(user_input_gender, user_input_weight, user_input_height, user_input_age, rbm))
else:
print("对不起,您输入的信息有误")
# 避免死循环
input_msg = input("请开始输入:")
if __name__ == "__main__":
main()
4.0 功能实现
- RMB计算器
- 4.0新增:处理异常操作
- 课后练习:将程序模块化,计算部分封装到函数中
知识点:异常处理机制
- 异常处理的语法结构
try: #当python遇到try语句,先尝试执行try包含的代码
<body>
except <ErrorTypel>: # 如果没有错误发生,执行try—except后面的语句
<handler1>
except <ErrorType2>: # 如果发生错误,python寻找一个符合该错误的异常语句
<handler2> # 然后执行相应的except的处理代码
except:
<handle0r>
代码区:
"""
作者:Troublemaker
功能:RMB计算器
版本:4.0
日期:2019/9/19 22:32
脚本:4.0_and_exercise.py
4.0新增:处理异常操作
课后练习:将程序模块化,计算部分封装到函数中
"""
def calculate_rbm(user_input_gender, user_input_weight, user_input_height, user_input_age):
"""
计算rbm的值(封装函数)
"""
if user_input_gender == "men":
rbm = (13.7 * user_input_weight) + (5.0 * user_input_height) - (6.8 * user_input_age) + 66
elif user_input_gender == "women":
rbm = (9.6 * user_input_weight) + (1.8 * user_input_height) - (4.7 * user_input_age) + 655
else:
rbm = 1
return rbm
def main():
"""
主函数
"""
print("请按顺序输入你的体重(KG),身高(cm),年龄,性别(输入'men'or'women')")
print("注意:用空格进行分隔,且不带单位")
print("当输入:'quit'时程序退出")
input_msg = input("请开始输入:")
# while 循环
while input_msg != 'quit':
# 处理异常
try:
# 用空格对str进行分割
split_msg = input_msg.split(" ")
# 第一个元素为体重
user_input_weight = float(split_msg[0])
# 第二个元素为身高
user_input_height = float(split_msg[1])
# 第三个元素为年龄
user_input_age = int(split_msg[2])
# 第四个元素为性别
user_input_gender = split_msg[3]
# 调用函数 计算rbm值
rbm = calculate_rbm(user_input_gender, user_input_weight, user_input_height, user_input_age)
# 根据计算的RBM值,再进行相应的输出
if rbm != 1:
print("您的性别为{},体重为{}kg,身高为{}cm,年龄为{}岁,RMB为{}"
.format(user_input_gender, user_input_weight, user_input_height, user_input_age, rbm))
else:
print("对不起,您输入的信息有误")
# 避免出现红色警告
except ValueError:
print("对不起,您输入的信息有误")
# 避免死循环
input_msg = input("请开始输入:")
if __name__ == "__main__":
main()