迄今为止,我们写的 Python 代码都是一条一条语句按顺序向下执行的,这种代码结构叫做顺序结构。然而仅有顺序结构并不能解决所有的问题,比如我们设计一个游戏,游戏第一关的过关条件是玩家获得 1000 分,那么在第一关完成后,我们要根据玩家得到分数来决定是进入第二关,还是告诉玩家'Game Over'。在这样的场景下,我们的代码就会产生两个分支,而且这两个分支只有一个会被执行。类似的场景还有很多,我们将这种结构称之为'分支结构'或'选择结构'。
使用 if 和 else 构造分支结构
在 Python 中,要构造分支结构可以使用 if、elif 和 else 三个关键字。所谓关键字就是编程语言中有特殊含义的单词,像 if 和 else 就是专门用于构造分支结构的关键字,很显然你不能够使用它作为变量名。当然,我们并不是每次构造分支结构都会把三个关键字全部用上,下面我们通过例子加以说明。
我们来写一个身体质量指数(BMI)的计算器。身体质量指数也叫体质指数,是国际上常用的衡量人体胖瘦程度以及是否健康的一个标准,计算公式如下所示。通常认为 18.5≤BMI<24 是正常范围,BMI<18.5 说明体重过轻,BMI≥24 说明体重过重,BMI≥27 就属于肥胖的范畴了。
BMI = 体重 / (身高 ^ 2)
说明:上面公式中的体重以千克(kg)为单位,身高以米(m)为单位。
height = float(input('身高(cm):'))
weight = float(input('体重(kg):'))
bmi = weight / (height / 100) ** 2
print(f'{bmi = :.1f}')
if 18.5 <= bmi < 24:
print('你的身材很棒!')
提示:
if语句的最后面有一个:,它是用英文输入法输入的冒号;程序中输入的'、"、=、(、)等特殊字符,都是在英文输入法状态下输入的,这一点之前已经提醒过大家了。很多初学者经常会忽略这一点,等到执行代码时,就会看到一大堆错误提示。当然,认真读一下错误提示还是很容易发现哪里出了问题,但是强烈建议大家在写代码的时候切换到英文输入法,这样可以避免很多不必要的麻烦。
上面的代码中,我们在计算和输出 BMI 之后,加上了一段分支结构,如果满足 18.5≤BMI<24,程序会输出'你的身材很棒!',但是如果不满足条件,这段输出就没有了。这就是我们上面说的代码有不同的执行路径,有些代码不一定会执行到。我们在 if 关键字的后面给出了一个表达式 18.5 <= bmi < 24,之前我们说过,关系运算会产生布尔值,如果 if 后面的布尔值为 True,那么 if 语句下方,有四个空格缩进的 print('你的身材很棒!') 就会被执行。我们先输入几组数据运行上面的代码,如下所示。
第一组输入:
身高(cm):175
体重(kg):68
=
你的身材很棒!


