一、课程介绍
本节课学习新的数据类型 float,结合 if 嵌套和比较运算符,实现一个 BMI 指数计算器。
二、重难点解析
浮点数 float
浮点数其实就是小数,使用 float() 方法可以把整数和内容为数字的字符串转换为浮点数。
比较运算符
在 Python 中,大于、小于等符号叫做比较运算符。
比较运算经常与 if 分支结构同时出现,来进行一些分支情况的处理。
a = 4
b = 7
if a > b:
print(a)
else:
print(b)
if 嵌套
把一个分支结构放到另一个分支结构里就组成了 if 嵌套结构,
在 if 嵌套结构中,外层和里层的分支结构的数量没有限制,嵌套的层数也没有限制,具体要用多少个分支需要根据具体的问题来设置。
示例1:
if 条件1:
代码1
if 条件2:
代码2
示例2:
if 条件1:
代码1
if 条件2:
代码2
elif 条件3:
代码3
else:
代码4
代码5
示例3:
if 条件1:
代码
if 条件:
代码
elif 条件:
代码
else:
代码
elif 条件2:
代码
if 条件:
代码
elif 条件:
代码
else:
代码
else:
代码
三、单词卡
weight [weɪt] 重量
height [haɪt] 身高
sex [seks] 性别
四、小试牛刀
4.1 源码操作
把 BMI 计算器的代码与 turtle 库结合起来做一个可视化的 BMI 检测仪。
确定 BMI 指数对应的等级后,把指针移到等级对应的刻度条的中间。
例如,输入如下数据确定 BMI 指数对应的等级为 '低体重' 后,需要把指针移到低体重刻度条的中间:
提示:
1、图片名为 'BMI检测仪.gif':
图片名为 'BMI指针.gif':
2、每段刻度条的长度是相等的,长度都为 150;
3、代码提示:
import turtle
turtle.bgpic('BMI检测仪.gif')
p = turtle.Pen()
turtle.addshape('BMI指针.gif')
p.shape('BMI指针.gif')
p.penup()
weight = float(input('请输入体重(千克):'))
height = float(input('请输入身高(米):'))
BMI = weight / (height * height)
print(BMI)
sex = input('请输入性别(男生:M,女生:F):')
# 判断 BMI 指数的等级
# 输入的性别为 M
if sex == 'M':
if BMI <= 14.3:
print('低体重')
p.forward(-225)
elif 14.4 <= BMI <= 21.4:
print('正常')
p.forward(-75)
elif 21.5 <= BMI < 24.1:
print('超重')
p.forward(75)
else:
print('肥胖')
p.forward(225)
# 输入的性别为 F
elif sex == 'F':
if BMI <= 13.7:
print('低体重')
p.forward(-225)
elif 13.8 <= BMI <= 20.5:
print('正常')
p.forward(-75)
elif 20.6 <= BMI < 22.9:
print('超重')
p.forward(75)
else:
print('肥胖')
p.forward(225)
# 输入的性别为其它内容
else:
print('请输入正确的性别(M 或 F)!')
turtle.done()
4.2 源码操作
数字对战系统——编写代码制作一个数字对战系统,先由系统生成一个 1~10 之间的随机整数,玩家再通过控制台输入一个 1~10 之间的整数,用变量 r 表示 玩家输入的整数减去系统生成的随机整数的值;
如果 r 的值在 0~3 之间,则输出 '你赢了!',并输出系统生成的随机整数;否则,输出 '你输了!',并输出系统生成的随机整数;
示例:
提示:
1、使用 print( ) 可以在一行显示多个内容,例:
r = 5
print('系统出的数字为:', r)
运行结果为:
4.3 源码操作
小明家附近新开了一个动物园,为了吸引游客参观,推出了一些购买门票的优惠规则,为了更高效地检票,需要开发一个系统来自动判断游客需要购买的门票类型,请你根据下面的规则完成该系统的开发。
购票制度如下:
如果输入的年龄大于等于 18 岁,则需要再询问游客的职业是否为教师和军人,如果游客的职业是教师和军人,则可凭有效证件免费入园;如果是其它职业,则需要购买全票;
如果输入的年龄小于 18 岁,则需要判断游客所在的年龄段,如果年龄在 0~6 岁范围内,则可跟随家长免票入馆,如果年龄在 6~12 岁范围内,则可购买五折门票入馆,如果年龄在 12~18岁范围内,则可购买八折门票入园。
示例:
age = int(input('请输入你的年龄:'))
if age >= 18:
job = input('是否为教师或军人?是(yes)/ 否(no):')
if job == 'yes':
print('免票,请凭有效证件入园')
else:
print('请购买门票')
elif age < 18:
if 0 <= age <= 6:
print('免票,请跟紧家长,不要走丢')
elif 6 <= age <= 12:
print('五折门票,请购买门票')
else:
print('八折门票,请购买门票')
else:
print('请输入正确的年龄信息!')
五、扩展练习
# 请输入体重(千克):
# 请输入身高(米):
weight = float(input('请输入体重(千克):'))
height = float(input('请输入身高(米):'))
BMI = weight/(height*height)
print(BMI)
sex = input('请输入性别(男生:M,女生:F):')
if sex =='M':
if BMI < 14.4 and sex =='M':
print('低体重')
elif 14.4 <= BMI <=21.4 and sex =='M':
print('正常')
elif 21.4 < BMI <=24.1 and sex =='M':
print('超重')
else:
print('肥胖')
elif sex == 'F':
if BMI < 13.7 and sex =='F':
print('低体重')
elif 13.8 <= BMI <=20.5 and sex =='F':
print('正常')
elif 20.6 < BMI <=22.9 and sex =='F':
print('超重')
else:
print('肥胖')
else:
print('请输入正确的性别!')
六、大开脑洞
小龙虾专吃店!
print('------欢迎来到小龙虾专吃店!-------')
a = int(input('客官吃点啥(1:蒜香小龙虾,2:清蒸小龙虾):'))
if a==1:
print('好的!马上上蒜香小龙虾!')
elif a==2:
print('好的!马上上清蒸小龙虾!')
else:
print('sorry,客官,好像没有这道菜......')