项目3健康数据分析


 学习目标

知识目标: 

1. 了解程序设计的基本结构。

2. 掌握if、if...else和if...elif...else语句的基本结构和用法。

3. 掌握for循环、while循环语句的基本结构与用法。

4. 掌握循环中常用的break、continue和pass语句。

技能目标: 

1. 能够熟练进行分支结构的程序设计。

2. 能够熟练进行循环结构的程序设计。

素质目标: 

1. 培养学生分析问题的能力。

2. 培养学生编写程序解决问题的能力。

3. 严格遵纪守法,增强社会责任感。

3.1项 目 情 景

某运动俱乐部要为每个成员制订一套合理的运动健身计划,在此之前,教练建议每人进行一次BMI(body mass index,身体质量指数测试)。了解成员BMI可以帮助教练设计出最适合成员当前体重和身体状况的训练方案。例如,如果一个人非常瘦弱,教练可能会推荐力量训练来增加肌肉量; 而如果一个人超重,教练可能会推荐有氧运动来促进脂肪燃烧。现需要设计一个程序计算每个成员的BMI,并给出分析结果。

BMI指数即身体质量指数,是衡量人体肥胖程度的一个常用指标。项目经理列出需要完成的任务清单,如表31所示。


表31项目3任务清单




任 务 序 号
任 务 名 称
知 识 储 备
T31
健康数据分析
 程序基本结构

 分支语句

 循环语句

 其他常用语句


3.2相 关 知 识
3.2.1分支语句

Python程序中有顺序结构、分支结构(选择结构)和循环结构三种。顺序结构

是指按语句出现的先后顺序执行的最简单的程序结构。分支结构是按照给定条件有选择地执行程序中的语句,分为单分支、双分支和多分支三种形式。在Python语言中一般使用if语句(单分支)、if...else语句(双分支)和if...elif...else语句(多分支)实现分支结构。

1. if语句

if语句用于执行特定的代码块,当给定条件为真时执行。其语句格式如下: 


if 判断条件:

代码块

后续语句






图31单分支语句流程图


单分支语句执行中先判断条件是否成立,若条件为True,执行代码块,否则跳过代码块,继续执行后续语句。其流程图如图31所示。


注意: 
判断条件后需加冒号,代码块应以缩进方式表达。Python中的冒号和缩进可以帮助程序员区分代码之间的层次,理解语句间的逻辑关系,增强了程序的可读性。

例31判断成绩是否合格。


# 获取用户成绩

score = int(input("编写程序判断成绩是否合格,请输入你的得分:"))

# 根据得分判断成绩是否合格

if score >= 60:

print("成绩合格!")




执行结果如下:


编写程序判断成绩是否合格,请输入你的得分:88

成绩合格





微课31: 分支语句

2. if...else语句

if...else语句的语法格式如下: 


if 判断条件:

代码块1

else:

代码块2




双分支语句执行中也是先判断条件是否成立,若判断条件为True时,执行代码块1; 反之,判断条件为False时,执行代码块2。其流程图如图32所示。



图32双分支语句流程图


例32判断是否成年。


# 获取用户年龄

age = int(input("请输入你的年龄:"))

# 根据年龄判断是否成年

if age >= 18:

print("成年人")

else: 


print("未成年人")




执行结果1: 


请输入你的年龄:16

未成年人




执行结果2: 


请输入你的年龄:26

成年人




3. if...elif...else语句


在Python中,if和elif是用于控制程序流程的条件语句,它们允许根据条件的成立与否执行不同的代码块。

elif是else if的缩写,用于在多个条件之间进行判断。若if语句中条件为True,则执行代码块1; 若if语句中的条件为False,便会执行elif语句; 当所有条件都不满足时,执行else语句。

if...elif...else语句的语法格式如下: 


if 条件1:

代码块1

elif 条件2:

代码块2

...

elif 条件n-1:

代码块n-1

else:

代码块n




注意: 
每个条件后有“:”,代码块1、代码块2等都要对齐并向右边缩进。

多分支语句中,根据条件执行相应的代码块。即若条件1成立,执行代码块1; 若条件1不成立,条件2成立,执行代码块2; 以此类推,当所有条件都不成立,则执行else语句后的代码块n。其流程图如图33所示。



图33多分支语句流程图



例33遵守交通规则。


print("遵守交通规则,争做文明公民")

# 此处 1 表示红灯, 2表示绿灯,3表示黄灯

a = int(input("请输入交通信号灯:"))

if a == 1:

print("红灯停")

elif a == 2:

print("绿灯行")

elif a == 3:

print("遇到黄灯停一停")

else:

print("输入错误,请重新输入!")





执行结果1: 


遵守交通规则,争做文明公民

请输入交通信号灯:1

红灯停




执行结果2: 


遵守交通规则,争做文明公民

请输入交通信号灯:2

绿灯行





执行结果3: 


遵守交通规则,争做文明公民

请输入交通信号灯:3

遇到黄灯停一停




 职业素养提升 

交通信号灯的红、黄、绿灯光的颜色变化是根据一定的时间周期和交通流量通过程序进行控制的。交通信号灯转换的具体时间间隔会根据不同的交通状况和时间段进行调整。遵守交通规则能有效避免交通事故的发生,保护自身和他人的生命安全,同时有助于维护社会公共秩序。遵守交通规则不仅是基本的社会公德,更是法律规定,是每一位公民的职责和义务。我们应提高交通安全意识,增强法治观念,身体力行,自觉遵守交通规则,为构建和谐社会作出贡献。
3.2.2循环语句
1. while循环

在Python编程中,while语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。while循环执行流程如图34所示。



图34while循环执行流程


while语句的语法格式如下: 


while 表达式:

循环体




在执行while循环中,首先判断条件是否满足。如果条件为True时,那么执行循环体代码,然后判断条件是否满足。如此循环下去,直至条件不满足时停止循环。



例34坚持锻炼,增强体质。


print("第一天跳绳200个,每天增加50个")

i = 1

s = 200

print("坚持锻炼一个月")

while i < 31:

s = s + 50

i = i + 1

print("第", i-1, "天时,跳绳", s, "个")




执行结果如下: 


第一天跳绳200个,每天增加50个

坚持锻炼一个月

第 30 天时,跳绳 1700 个




 职业素养提升 

“健康中国”是中国政府提出的一个全国性的健康促进计划,旨在改善国民的健康状况和提升医疗卫生服务水平。这一计划与中国政府的“中国梦”理念相契合,强调预防为主,倡导健康生活方式,减少疾病发生,并通过优化医疗资源配置及推进医疗服务均等化等措施,提高全民健康水平。

作为一名程序设计人员,更要注意强身健体。选择适合的运动方式,制订合理的锻炼计划,持之以恒,坚持锻炼可以提高身体素质,增强免疫力,预防疾病,同时有助于保持良好的心理状态,减少压力,提高工作效率。良好的体质不仅对个人有益,也是为了更好地服务于社会和国家。通过保持健康的生活方式,我们可以更有效地发挥自己的潜力,为实现个人的梦想和国家的繁荣富强作出积极的贡献。
while语句中可以使用if语句根据需要执行不同的代码块,两者组合使用,可以实现更复杂的程序逻辑。

例35计算10以内奇数的和。


print("计算10以内奇数的和")

s = 0

i = 1

while i < 11:

if i % 2 == 1:

s = s+i

i = i+1

print("s=", s)




执行结果如下: 


计算10以内奇数的和

s= 25




微课32: 循环语句

2. for循环

在Python中,for循环可以遍历任何序列,比如字符串或者后期要学的列表、元组等。其语句格式如下: 


for 变量 in 序列 :

循环语句




例36竖式输出“我爱你,中国”。


s = "我爱你,中国"

for i in s:

print(i)




执行结果如下: 


我

爱

你

,

中

国




for循环也常常和range()函数搭配使用,range()可以创建一个整数序列。其语法格式如下: 


range(start,stop,step)




参数说明如下: 

(1) start是序列的起始值,默认从0开始。如range(3)等同于range(0,3)。

(2) stop是序列的结束值,但不包括stop。如range(3)指[0,1,2)。

(3) step是步长,默认为1。如range(3)等同于range(0,3,1)。

例37打印星号三角。


print("打印星号三角")

for i in range(1, 6):

print("* " * i)




执行结果如下: 


打印星号三角

* 

* * 

* * * 

* * * * 

* * * * *





3.2.3其他常用语句

在while循环中,当条件表达式为True时,程序会执行循环,所以使用while循环时,一定要确保循环条件最终会变为False,否则条件永远成立,便会形成无限循环,即死循环。为避免这种情况的发生,可以用break语句或continue语句跳出循环。

1. break语句

使用break语句会立即终止循环,不再执行循环体中剩余代码。

例38验证用户输入的数字是否在指定范围内: 在用户输入验证中,当用户输入不符合要求时,可以使用 break 语句跳出循环,避免无限循环。


while True:

user_input = input("请输入一个 1 ~ 100 的数字:")

if user_input.isdigit():






number = int(user_input)

if 1 <= number <= 100:

print("输入正确!")

break

else:

print("输入错误,请输入 1 ~ 100 的数字。")

else:

print("输入错误,请输入数字。")






图35应用break语句的效果


以上程序的执行效果如图35所示。


2. continue语句

使用continue语句会跳出本次循环,继续执行下一次循环。如遇循环嵌套时,两者都是跳出最内层循环。

例39输出10以内的奇数。


print("输出10以内的奇数")

i = 1

for i in range(1, 11):

if i % 2 == 0:

continue

else:

print(i)




执行结果如下: 


1

3

5

7

9




例310跳出当前循环,继续下一次循环。


print("欢迎光临**景区 预约门票")

while True:

age = int(input("请输入你的年龄:"))

# 根据年龄判断景区票价

if age >= 60 or age < 6:

print("60岁以上老年人及6岁以下未成年人免门票,可以凭身份证直接入园!")

continue

elif 18 > age >= 6 :

print("6至18岁未成年人,景区半价:57元/人")

break

else:

print("景区票价:115元/人")

break

print("请确认付款金额,扫码购票!")




例310的执行结果如图36所示。



图36应用continue语句的效果


3. pass语句

Python中的pass语句是一个占位语句,不做任何事,其作用在于保存程序结构的完整性。比如while语句中,pass语句可以作为空的执行体,无限次循环,无任何实际操作,具体写法如下: 


while True:

pass




以上语句进入死循环,所有只限举例,现实中不建议使用这样。

微课33: 其他常用语句


3.3项 目 实 现

该项目包含一个任务,任务序号是T31,任务名称是健康数据分析。

3.3.1分析与设计
1. 需求分析

BMI指数的计算公式为: 体重(千克)/身高(米)的平方。例如,一个体重为70千克,身高为1.75米的人,其BMI值为70/(1.75×1.75) = 22.86。

根据世界卫生组织的标准,BMI指数的分类如下。

偏瘦: BMI < 18.5。

正常: 18.5 ≤ BMI < 24。

超重: 24 ≤ BMI < 28。

肥胖: BMI ≥ 28。

需要注意的是,BMI指数并不能完全准确地反映一个人的身体脂肪含量和分布情况,因为肌肉发达的人可能会被误判为超重或肥胖。此外,对于不同种族、年龄和性别的人群,BMI指数的标准也可能有所不同。因此,在评估个人健康状况时,还需要结合其他因素进行综合判断。

(1) 用户输入。
输入体重并保存到w中,输入身高保存到h中,再将输入的数据转换成数字型。

(2) 系统处理。
根据公式计算BMI值,使用多分支语句并根据BMI值所在的范围进行判断,并输出分析结果。

(3) 系统循环。
使用while循环并根据用户的输入需求,确定是否继续进行BMI分析。

系统测试数据如下: 


55,1.63

60,1.50

70,1.90

55,1.83





2. 流程设计

该项目流程图如图37所示。



图37项目3流程图