查看全课大纲(第 17 / 51 节)
- 1.为什么人人都该学点编程?
- 2.计算机与程序设计:你的电脑到底在“想”什么?
- 3.Python 这门语言,到底有什么魔力?
- 4.Python 开发环境配置:如何拥有你的第一个“编程工具箱”?
- 5.如何安装一个更强大的代码编辑器?
- 6.汇率兑换1.0:你的第一个“钱生钱”小程序
- 7.你的第一行代码,藏着哪些秘密?
- 8.汇率兑换2.0(上):让程序看懂“CNY”和“USD”
- 9.汇率兑换程序,如何让它“聪明”地判断币种?
- 10.汇率兑换程序能一直运行,直到我喊停吗?
- 11.汇率兑换4.0:如何把“算钱”功能打包成积木?
- 12.汇率兑换5.0:给你的程序穿上“结构化”的西装
- 13.怎么用 Python 画一个会动的五角星?
- 14.如何让程序自动画出不同大小的五角星?
- 15.函数自己调用自己,会发生什么?
- 16.用递归画出神奇的分形树
- 17.Python 怎么计算你一天躺着不动能消耗多少热量?
- 18.如何让程序“活”起来,持续为你服务?
- 19.如何让 BMR 计算器更“聪明”?
- 20.当程序遇到“不按套路出牌”的用户怎么办?
- 21.怎么用 Python 模拟一个“滚雪球”式的存钱计划?
- 22.如何用列表记录每一周的存款?
- 23.如何让程序自己数数?—— 用 for 循环解放你的双手
- 24.52周存钱挑战4.0:你的存款计算器能有多灵活?
- 25.52周存钱挑战:怎么根据日期自动查存款?
- 26.Python 怎么判断一年中的第几天?
- 27.列表 vs 元组:哪个更适合存储月份天数?
- 28.用集合给月份分个队,换个思路算天数
- 29.把月份和天数“锁”在一起:用字典给数据配个对
- 30.Python 怎么判断密码强弱?
- 31.Python 怎么给密码设置“防沉迷”系统?
- 32.Python 怎么把密码保存到文件里?
- 33.Python 怎么读取文件里的密码?
- 34.Python 怎么把密码检查工具“打包”起来?
- 35.Python 怎么把文件操作也“打包”起来?
- 36.计算机怎么“扔骰子”?——用Python模拟随机事件
- 37.如何用 Python 模拟掷两个骰子?
- 38.怎么用 Python 把骰子轨迹画出来?
- 39.骰子点数分布长啥样?用直方图一眼看穿!
- 40.用科学计算库让骰子程序“起飞”
- 41.空气质量指数怎么算?手把手教你写一个AQI计算器
- 42.空气质量指数计算:从零开始,让程序看懂空气
- 43.如何读取空气质量数据文件并找出空气质量最好的五个监测点?
- 44.JSON 数据怎么变成 Excel 表格?—— 让数据换个“马甲”
- 45.Python 怎么让程序自己判断文件类型?
- 46.如何让程序自己上网查空气质量?
- 47.用美味的汤来解析网页:Beautiful Soup 入门
- 48.如何让爬虫自动抓取全国所有城市的空气质量?
- 49.爬到的数据怎么存下来?—— 把全国空气质量数据保存为CSV文件
- 50.用 pandas 玩转空气质量数据:找出全国空气最好和最差的城市
- 51.空气质量数据怎么“洗”干净,还能画成图?
Python 怎么计算你一天躺着不动能消耗多少热量?
约 19 分钟
小象实战讲义 · Python 入门:8 个小项目边玩边学
想不想知道,即使你躺平一整天,身体也会默默消耗多少热量?这个神奇的数字叫做“基础代谢率”(BMR),它是健身、减肥时调整饮食和运动量的重要参考。今天,我们就用 Python 来打造一个专属的 BMR 计算器!学完这一节,你就能输入自己的性别、身高、体重和年龄,立刻算出你的“躺平”热量消耗,是不是很酷?
💡 核心导读
- 项目目标:制作一个能根据性别、身高、体重、年龄计算基础代谢率的程序。
- 核心逻辑:使用
if-elif-else判断语句,根据性别选择不同的计算公式。 - 新知解锁:认识 Python 中的数值类型(整数和浮点数),以及它们之间如何转换。
- 本节增量:我们只做一件事——把计算逻辑写进程序,并理解计算过程中数字的“身份”(类型)。
一、什么是 BMR?为什么需要计算它?
基础代谢率(BMR),简单说,就是你身体在完全安静、躺着不动的情况下,为了维持生命(心跳、呼吸、体温等)所需要消耗的最低热量。
这个数值非常重要:
- 健身达人用它来精确制定增肌或减脂计划。
- 普通人了解自己的 BMR,可以更科学地安排每日饮食,避免“吃多了”或“吃少了”。
计算公式(男女不同):
- 男性:
BMR = 13.7 × 体重(kg) + 5.0 × 身高(cm) - 6.8 × 年龄 + 66 - 女性:
BMR = 9.6 × 体重(kg) + 1.8 × 身高(cm) - 4.7 × 年龄 + 655
看,其实就是把几个数字代进公式里算一下。我们的任务,就是让 Python 帮我们完成这个计算。
二、动手之前先“画图”:理清程序思路
写程序就像盖房子,先画图纸。对于这个计算器,我们的“图纸”(流程图)很简单:
- 输入:需要用户提供四个信息——性别、体重(kg)、身高(cm)、年龄。
- 处理:
- 判断性别是“男”还是“女”。
- 根据性别,选择对应的公式进行计算。
- 如果性别输入既不是“男”也不是“女”,则给出错误提示。
- 输出:打印出计算出的 BMR 值(单位:大卡)。
思路清晰了,开写!
三、BMR 计算器 1.0 版:先让程序跑起来
我们先不急着让用户输入,而是把数据“写死”在程序里。这样做的好处是,可以快速验证我们的计算逻辑是否正确。
"""
作者:小象教研组
功能:BMR计算器
版本:1.0
"""
# 我们把输入数据直接写在程序里(先写死)
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) + 655
else:
# 如果性别输入错误,我们给 bmr 一个特殊值 -1 作为标记
bmr = -1
# 根据 bmr 的值决定输出什么
if bmr != -1:
print('您的基础代谢率(BMR)是:', bmr, '大卡')
else:
print('抱歉,暂不支持该性别的BMR计算。')运行一下,看看结果:
您的基础代谢率(BMR)是: 1730.0 大卡太棒了!一个身高175cm、体重70kg的25岁男性,基础代谢率是1730大卡(13.7×70 + 5×175 − 6.8×25 + 66 = 959 + 875 − 170 + 66)。
动手试试:把第一行的 gender = '男' 改成 gender = '女',再运行一次,看看结果会变成多少?
四、🔍 新知解锁:数字的“身份”——数值类型
细心的你可能发现了,上面的代码里,数字的写法有点不一样:有的是 70,有的是 13.7,还有的是 5.0。它们在 Python 眼里,有着不同的“身份”,我们称之为类型。
1. 两种主要的数值类型
- 整数 (
int):像100,-250,0这样,没有小数点的数。 - 浮点数 (
float):像0.0,-3.14,5.0这样,带有小数点的数。科学计数法如3.4e-3(表示 3.4×10⁻³) 也是浮点数。
关键区别:5 是整数,5.0 是浮点数。
2. 类型转换:让数字“变身”
有时候我们需要在整数和浮点数之间转换。
# 整数 -> 浮点数:加个 .0
print(float(4)) # 输出:4.0
# 浮点数 -> 整数:只保留整数部分,小数直接"砍掉"
print(int(3.14)) # 输出:3
print(int(9.99)) # 输出:9 (不是四舍五入!)4.0
3
9注意:浮点数转整数会丢失精度(小数部分),就像你把 3.14 元当成 3 元花了一样。
3. 混合运算的结果是什么类型?
在我们的公式 13.7 * weight 中,13.7 是浮点数,weight (70) 是整数。它们相乘的结果是什么类型?
result = 13.7 * 70
print(result) # 输出:959.0 (一个浮点数)
print(type(result)) # 输出:<class 'float'> (用type()函数查看类型)959.0
<class 'float'>规则:当整数和浮点数一起运算时,Python 会自动把整数“提升”为浮点数,结果也是浮点数。这样能保证计算的精度。
4. 字符串和数字的互相转换
还记得我们第一节课的汇率计算器吗?用户输入的是字符串(如 "100"),我们要把它变成数字才能计算。
# 字符串 -> 整数/浮点数 (前提是字符串内容看起来像个数字)
money_str = "100"
print(int(money_str)) # 输出:100 (整数)
print(float(money_str)) # 输出:100.0 (浮点数)
pi_str = "3.14"
# print(int(pi_str)) # 这会报错!因为"3.14"不能直接转成整数
print(float(pi_str)) # 输出:3.14 (正确)
# 数字 -> 字符串
num = 42
print(str(num) + " 是一个数字") # 输出:42 是一个数字100
100.0
3.14
42 是一个数字重要提示:把字符串转成数字时,一定要确保字符串的内容是有效的数字格式,否则程序会出错。我们会在后面的版本学习如何处理这种错误。
📝 动手练一练
类型猜猜看:不运行程序,你能说出下面每个值在 Python 中是什么类型吗?(
int,float,str)-5"72.5"0.01e2'100'
计算与转换:请编写一小段代码,计算表达式
(10 / 3) + 5的结果,并: a) 直接打印结果。 b) 将结果转换为整数后再打印,观察两者区别。
👉 点击查看参考答案
类型猜猜看答案:
-5->int(整数)"72.5"->str(字符串,因为有引号)0.0->float(浮点数,有小数点)1e2->float(科学计数法表示的浮点数,值为100.0)'100'->str(字符串,因为有引号)
计算与转换参考答案:
# 计算表达式
result = (10 / 3) + 5
print("直接结果(浮点数):", result) # 输出一个很长的浮点数,如 8.333333333333334
# 转换为整数
result_int = int(result)
print("转换为整数后:", result_int) # 输出:8 (小数部分被直接去掉)直接结果(浮点数): 8.333333333333334
转换为整数后: 8本章小结
恭喜!你已经完成了 BMR 计算器的第一个可运行版本。虽然数据是写死的,但核心的计算和判断逻辑已经完整实现了。
📋 行动清单
- 运行今天的 1.0 版代码,分别计算男性和女性的 BMR,感受
if-elif-else分支的魅力。 - 修改代码中的体重、身高、年龄,算算你自己(或朋友)的 BMR。
- 思考:如果我想让用户自己输入信息,而不是我写在代码里,应该怎么做?(提示:回忆一下第一节课我们用过的某个函数。)
在下一节,我们将为计算器升级到 2.0 版本:让用户通过键盘输入自己的信息,并且可以连续计算多个人的 BMR,直到想退出为止。程序会变得更加互动和实用!
—— 小象教研组
配套资料 · 直接下载
课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。
- 下载第4章代码包:基础代谢率计算(含全部版本 4 个 .py)ZIP · 3KB