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

去社区提问

简介:本节课我们学习如何将基础代谢率计算功能封装到函数中,让程序看起来更加简洁美观。

案例描述

Hi~欢迎来到今天的课堂,和我一起了解更多Python编程相关知识。

在基础代谢率计算程序的实际使用过程中,实现BMR值计算的部分是会反复被使用的。
每出现一个用户提出计算BMR值的要求,就需要在代码中增加一段实现计算作用的代码段。

为了让程序更加简单,我们可以使用函数来把计算过程模块化

把计算的过程变成函数之后,每次使用它只需要一行代码就能搞定。

听起来是不是还挺厉害,下面我们就来认真学习一下Python中函数的概念和使用方法吧。

案例分析

函数的功能

函数是把实现特定功能的代码块编写在一起,其实也就是一组表达特定功能表达式的封装。目的是便于程序的阅读复用

  1. 便于程序阅读

每个函数都有各自的功能,例如有下面四个函数:

函数1实现的功能是找到一组数据中的最大值

函数2的功能是找到一组数中的最小值

函数3的功能是计算数据的平均数

函数4的功能是得到一组数的中位数

当输入一系列数据后,我们想分别得到这组数据的最小最大值、平均数、中位数,就可以使用上面定义的4个函数。

这个过程就好像在搭积木,把我们想要的功能和形状的积木堆积在一起,从而达成目标。

这样一来,在阅读程序的时候我们就会看到调用了一个个函数,却不用太在意每个函数内是以什么具体方法实现的。

可能找到最大值函数需要很多行代码来实现功能,但我们在调用它时只需要一行代码就可以搞定。

  1. 便于复用

我们把计算BMR值的功能封装进函数后,假如有十个用户输入了个人信息,要求通过程序计算得到结果。那我们需要做的就是不断地调用这个函数,而不需要将计算部分代码重复书写十遍。

函数定义之后,就可以去重复使用它的功能。

Python中还有很多内置函数,前面的课程中我们也已经有所接触,例如input()print()eval()等等。

了解过函数的作用,下面让我们一起来看看究竟应该如何定义和使用函数。

函数的定义

定义函数需要按照下面的语法结构来完成:

def是定义的意思,后面写上定义的函数名称,括号中是参数列表

啥是参数列表?

其实非常简单,我们想让程序实现功能,总得给它点儿‘启动资金’吧。

参数列表,就是这个函数中所需要处理的数据。假如函数实现的功能是找到一组数据中的最大值,那么括号传递给它的参数列表中就应该包括这组数据中的所有数字。

在我们今天的案例中,函数的功能是计算BMR值,那参数列表就应该包含计算基础代谢率所要用到的性别、身高、体重、年龄信息。

函数体中是实现函数功能所需要的一系列方法和代码。

return后面是函数的返回值,计算后的结果需要返回给主函数,这一点在下面的函数调用过程还会详细讲解~

函数调用过程

在程序的运行过程中,函数调用又是怎样的流程呢?下面我们就来讨论一下这个问题。

用一张图片带你先大致了解整个调用过程:

基本上可以划分为下面四个步骤:

  1. 主程序先顺序执行,当执行到函数调用时暂停;
  1. 调用函数,并且将参数赋值给函数的参数列表;
  1. 执行函数体中的代码,对数据作处理;
  1. 返回函数结果,回到调用处,继续向下执行。

好啦,关于函数的相关知识我们已经了解的差不多了。现在就到了实战时间,把基础代谢率计算的部分封装成函数~

首先来定义函数,还记得我们刚才讲过函数定义的语法结构吗?

定义名称为get_bmr的函数用于计算数值。需要的参数有四项,分别是用户的性别、体重、身高、年龄,函数的参数列表中就应该有以上四项内容。

  1. def get_bmr(gender,weight,height,age):

函数体可以直接从之前完成的代码中拷贝出相应部分:

  1. def get_bmr(gender,weight,height,age):
  2. if gender == '男':
  3. bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
  4. elif gender == '女':
  5. bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655
  6. else:
  7. bmr=-1

最后函数的返回值当然就是计算得到的bmr值,使用return来返回它。

好啦,现在我们就顺利完成了get_bmr这个函数的定义。现在程序中计算BMR值的部分,就可以调用它来完成。

  1. def get_bmr(gender,weight,height,age):
  2. if gender == '男':
  3. bmr = (13.7 * weight) + (5.0 * height) - (6.8 * age) + 66
  4. elif gender == '女':
  5. bmr = (9.6 * weight) + (1.8 * height) - (4.7 * age) + 655
  6. else:
  7. bmr=-1
  8. return bmr
  9. y_or_n = input('是否退出程序(y/n)?')
  10. while y_or_n != 'y':
  11. print('请输入以下信息,用空格分割')
  12. info = input('性别 体重(kg) 身高(cm) 年龄:')
  13. str_list = info.split(' ')
  14. try:
  15. gender = str_list[0]
  16. weight = float(str_list[1])
  17. height = float(str_list[2])
  18. age = int(str_list[3])
  19. bmr = get_bmr(gender,weight,height,age)
  20. if bmr != -1:
  21. print('您的性别:{},体重:{}公斤,身高:{}厘米,年龄:{}岁'.format(gender, weight, height, age))
  22. print('您的基础代谢率:{}大卡'.format(bmr))
  23. else:
  24. print('暂不支持该性别')
  25. except ValueError:
  26. print('请输入正确的信息!')
  27. except IndexError:
  28. print('输入的信息过少!')
  29. except:
  30. print('程序异常!')
  31. y_or_n = input('是否退出程序(y/n)?')

最后执行这段代码来看看效果。

本关总结

今天这节课,我们主要学习了Python中函数的定义和使用方法。

实现特定功能的代码被编写在一个函数里,便于程序的阅读和复用,使程序模块化。

函数的定义:

函数的调用过程:

  • 程序在调用函数处暂停执行
  • 调用时将参数赋值给函数的参数
  • 执行函数体
  • 返回函数结果,回到调用处继续执行
下节预告

到这里我们就完成了基础代谢率计算程序的全部课程~下节课开始,就要开启一个更加有趣的关于‘存钱’的案例,教你用Python给自己规划高效实用的存钱任务。

如果你想获取课程相关资料,和更多同学一起交流学习,欢迎添加班主任老师微信。

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

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

基础代谢率计算 1/3

基础代谢率计算(5)

1.0x

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

行动力超过

累计学习

学习下一课时