基础代谢率计算/基础代谢率计算(1)

去社区提问

简介:用Python实现基础代谢率计算器1.0版本。

案例描述

你是否也曾经立下过减肥的flag?
说起减肥还记得当初‘不吃烧烤,不吃炸鸡,拒绝宵夜’和‘管住嘴,迈开腿’的口号吗~

(当初的雄心壮志是不是总在坚持了一周后烟消云散。)

用科学的数据指标来指导运动和饮食会让减肥变得更加轻松,今天教你用Python计算基础代谢率,也就是安静状态下人体消耗的最低热量,其他活动都要建立在这个基础上。

本节课开始,我们一起用Python计算人体基础代谢率(BMR)。课后你也可以计算自己的BMR值,来制订更加合理的运动和饮食方案~

我们目的是用程序实现BMR值计算,在正式开始讲解前,你可以先结合之前的知识思考一下完成计算操作需要哪些步骤?涉及哪些变量?

案例分析

有答案了吗~下面来揭晓答案啦,请跟着我的思路来对比自己的答案是否正确吧。

和之前一样,我们把问题拆分为:输入、计算、输出三个部分。

首先来分析输入,我们可以看到,在BMR的计算公式中,不论男女,都需要提供体重身高年龄这三项信息。那么显而易见,程序的输入部分也要由这三个数据构成。

得到输入数据,将它们带入公式计算,就能得到BMR结果。但由于男女的基础代谢率计算公式不同,在计算之前先要对性别进行判断,这就使得上一步的输入中,还要额外加入性别信息。

最后将BMR值输出打印出来。

经过分析,你是不是发觉今天的问题其实并不复杂,运用前几节课学过的知识就能完美解决。你也可以在看讲解前先尝试自己书写代码,如果遇到问题也不要担心,记得在学习群寻求老师和同学们的帮助~

除了简单的输入输出和计算这些已经学过的知识外,本节课还会额外为你讲解Python中常用的数据类型,以及不同的数据类型如何相互转换。这也是非常重要的知识点,一定要好好听讲哦。

下面就来到了代码时间。

按照前面分析的流程,先为程序输入性别体重等必要信息,分别设置4个变量来接收。

  1. gender = '男'
  2. weight = 70
  3. height = 185
  4. age = 30

性别信息可能是:男、女、其他未知输入。针对这三种情况,分别进行不同操作。这里要用到前面学习的哪个知识点呢?

当然是条件分支语句啦,我们先把大体的框架写出来,里面的具体内容先用pass省略:

  1. if gender == '男':
  2. pass
  3. elif gender == '女':
  4. pass
  5. else:
  6. pass

我们复习一个重要知识点:赋值符号和等于号,Python中===代表完全不同的含义。

=是赋值符号,它的作用是把右边的值赋给左边的变量,例如:

  1. name = '小明'
  2. gender = '男'
  3. age =18

上面的几个例子都体现了=赋值的作用。

关系操作符中的等于采用两个等号==来表示,常常用于条件判断中,例如:

  1. fruit = '苹果'
  2. if fruit=='苹果':
  3. print('拿到了苹果!')

出于习惯,我们可能经常将需要等于操作符的地方写成赋值操作符,看下面的代码:

代码练习:

编程区

  1. x = 1
  2. y = 10
  3. if x = y:
  4. print('xy相等')

终端区

当运行上一段代码时,程序的第三行if条件语句会报出语法错误,原因就是使用了错误的赋值符号,判断变量x和y是否相等,应该写作if x == y:

这里也是很多同学会不小心犯错的地方,今天先来打个预防针,希望你在写代码的时候能够巧妙地避开这个小‘陷阱’。

好啦,现在再回到基础代谢率计算的问题上来,让我们根据计算公式把条件分支结构补充完整:

  1. if gender == '男':
  2. BMR=13.7*weight+5.0*height-6.8*age+66
  3. elif gender == '女':
  4. BMR=9.7*weight+1.8*height-4.7*age+665
  5. else:
  6. BMR=-1

当输入正确的性别信息时,分别计算BMR值,如果性别信息输入不正确,我们就给BMR定义一个‘不可能’计算出现的值-1。

在上述计算中,出现了很多的变量和数字,5.0和5在程序中表示的是相同含义的数值吗?下面就让我们来讨论一下关于Python中数值类型的问题。

Python中常用的数值类型有以下两种。

  • 整数类型,与数学中的整数概念一致

例如:10,20,350等等。

  • 浮点数类型,带有小数点及小数的数值

例如:3.14,5.0,9.56等等。

不同数据类型之间也是可以相互转换的,只需要给数据‘穿个衣服’就能实现。

几个常见数据类型的英文表示为 :
整数:integer
浮点数:float
字符串:string

在Python中,取它们的简写形式,int就代表整型,float代表浮点数类型,str代表字符串类型。

想要将数据转换为什么形式,只需要给它穿上对应类型的‘衣服’就能实现。先来看个简单的例子,把整型数据转换为浮点数:

  1. float(4)

4是一个整数,浮点数的‘衣服’是float,只需要让4穿上它,就完成了转换,下面来打印结果验证一下:

代码练习:

编程区

  1. print(float(4))

终端区

同样地,把浮点数转换为整数也是相同操作,不过转换成整数,后面的小数部分如何处理?请你从下面的两个例子中找到规律:

  1. int(3.14)
  2. int(5.98)

上面的两行代码完成了浮点数到整数的转换,把结果打印出来看看:

代码练习:

编程区

  1. print(int(3.14))
  2. print(int(5.98))

终端区

可以看到,从浮点数到整型数据的转换,只会保留整数部分,而不是遵循四舍五入的原则。

请你思考:如果我想把字符串类型的数据'3''3.14'转换为整数和浮点数应该怎么操作呢?

来揭晓答案:

  1. int('3')
  2. float('3.14')

不过这里需要注意的是,在字符串转换成浮点或整型数据时,要求这个字符串本身是数字类型的,比如'1''5.20',像'姓名'这类字符串就无法完成转换。

在这里为大家介绍type()函数,它的作用是查看一个数据的类型,使用方法也非常简单:

  1. type(1)
  2. type('小明')
  3. type(3.14)

把数据放进type()括号中,就能查看结果啦。

代码练习:

编程区

  1. print(type(1))
  2. print(type('小明'))
  3. print(type(3.14))

终端区

了解过数值类型相关知识,让我们继续回到基础代谢率计算的正轨中来,我们的代码只差最后一步输出,就大功告成了。

  1. #输入相关信息
  2. gender = '男'
  3. weight = 70
  4. height = 185
  5. age = 30
  6. #计算BMR值
  7. if gender == '男':
  8. BMR=13.7*weight+5.0*height-6.8*age+66
  9. elif gender == '女':
  10. BMR=9.7*weight+1.8*height-4.7*age+665
  11. else:
  12. BMR=-1

输出结果时,我们不能直接将前面计算的BMR值打印出来。
上面代码中,当用户输入的性别信息有误时,设定BMR值为-1,因此输出时首先应判断BMR是否为-1,如果是,则提示用户’输入的性别有误‘;否则打印出BMR值。

  1. if BMR == -1:
  2. print('输入的性别有误')
  3. else:
  4. print('您的BMR值是:',BMR)

最后来整体回顾一下今天的代码~

代码练习:

编程区

  1. #输入相关信息
  2. gender = '男'
  3. weight = 70
  4. height = 185
  5. age = 30
  6. #计算BMR值
  7. if gender == '男':
  8. BMR=13.7*weight+5.0*height-6.8*age+66
  9. elif gender == '女':
  10. BMR=9.7*weight+1.8*height-4.7*age+665
  11. else:
  12. BMR=-1
  13. #输出结果
  14. if BMR == -1:
  15. print('输入的性别有误')
  16. else:
  17. print('您的BMR值是:',BMR)

终端区

本关总结

现在就完成了基础代谢率计算的1.0版本,让我们一起来总结一下今天的重点知识吧。

  • 复习赋值操作符和等于操作符的区别与用法

=赋值操作符

==等于操作符

  • Python中常用数值类型和转换方法
下节预告

下节课我们将为程序实现两个新功能:

  1. 根据用户输入计算BMR

  2. 让程序持续运行直到用户选择退出

如果你想掌握更多Python相关知识,与更多同学一起学习交流,欢迎添加班主任老师微信~

扫描二维码添加班主任微信

已经添加过班主任的同学,可以直接联系对应老师,无需重复添加哦。

基础代谢率计算 1/3

基础代谢率计算(1)

1.0x

恭喜完成本课时的学习!
坚持学习

行动力超过

累计学习

学习下一课时