一、课程介绍

本节课学习新的数据类型 float,结合 if 嵌套和比较运算符,实现一个 BMI 指数计算器。

A018 《BGM计算器》编程 源码_比较运算符

二、重难点解析

A018 《BGM计算器》编程 源码_A018《BGM计算器》编程 源码_02浮点数 float

浮点数其实就是小数,使用 float() 方法可以把整数和内容为数字的字符串转换为浮点数

A018 《BGM计算器》编程 源码_比较运算符_03

A018 《BGM计算器》编程 源码_一语_04比较运算符

在 Python 中,大于、小于等符号叫做比较运算符

A018 《BGM计算器》编程 源码_比较运算符_05

比较运算经常与 if 分支结构同时出现,来进行一些分支情况的处理。

a = 4
b = 7
if a > b:
   print(a)
else:
   print(b)

A018 《BGM计算器》编程 源码_一语_06if 嵌套

把一个分支结构放到另一个分支结构里就组成了 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 指数对应的等级后,把指针移到等级对应的刻度条的中间。

A018 《BGM计算器》编程 源码_浮点数_07

例如,输入如下数据确定 BMI 指数对应的等级为 '低体重' 后,需要把指针移到低体重刻度条的中间:

提示:

1、图片名为 'BMI检测仪.gif':

A018 《BGM计算器》编程 源码_浮点数_08

图片名为 'BMI指针.gif':

A018 《BGM计算器》编程 源码_一语_09

2、每段刻度条的长度是相等的,长度都为 150;

A018 《BGM计算器》编程 源码_一语_10

3、代码提示:

A018 《BGM计算器》编程 源码_一语_11

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 之间,则输出 '你赢了!',并输出系统生成的随机整数;否则,输出 '你输了!',并输出系统生成的随机整数;

示例:

A018 《BGM计算器》编程 源码_A018《BGM计算器》编程 源码_12

提示:

1、使用 print( ) 可以在一行显示多个内容,例:

r = 5
print('系统出的数字为:', r)

运行结果为:

A018 《BGM计算器》编程 源码_比较运算符_13

4.3 源码操作

小明家附近新开了一个动物园,为了吸引游客参观,推出了一些购买门票的优惠规则,为了更高效地检票,需要开发一个系统来自动判断游客需要购买的门票类型,请你根据下面的规则完成该系统的开发。

购票制度如下:

如果输入的年龄大于等于 18 岁,则需要再询问游客的职业是否为教师和军人,如果游客的职业是教师和军人,则可凭有效证件免费入园;如果是其它职业,则需要购买全票;

如果输入的年龄小于 18 岁,则需要判断游客所在的年龄段,如果年龄在 0~6 岁范围内,则可跟随家长免票入馆,如果年龄在 6~12 岁范围内,则可购买五折门票入馆,如果年龄在 12~18岁范围内,则可购买八折门票入园。

示例:

A018 《BGM计算器》编程 源码_比较运算符_14

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('请输入正确的年龄信息!')

五、扩展练习

A018 《BGM计算器》编程 源码_浮点数_15

# 请输入体重(千克):
# 请输入身高(米):
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('请输入正确的性别!')

六、大开脑洞

小龙虾专吃店!

A018 《BGM计算器》编程 源码_A018《BGM计算器》编程 源码_16

print('------欢迎来到小龙虾专吃店!-------')
a = int(input('客官吃点啥(1:蒜香小龙虾,2:清蒸小龙虾):'))
if a==1:
    print('好的!马上上蒜香小龙虾!')
elif a==2:
    print('好的!马上上清蒸小龙虾!')
else:
    print('sorry,客官,好像没有这道菜......')