
3.2 if语句
所谓判断,是指当满足某些条件时,才能够执行某件事情,如果条件不能满足是不被允许执行的。就像在现实生活中,过马路时需要看交通信号灯,当为绿灯时,可以通过马路,否则,需要停下等待。
其实,不仅生活中需要进行判断,在Python编程开发中,同样需要用到判断。例如,在进行用户登录时,只有用户名和密码均正确时,才会被允许登录。Python提供了多种判断语句,下面对这些判断语句进行详细介绍。
Python用if语句来选择要执行的程序代码,从而实现分支结构。在if语句内部,可以包含其他的语句,也可包括if语句。
3.2.1 判断两个数值大小的程序
在实际应用中,经常会遇到比较两个数值的大小并将结果输出的情况,下面通过使用PyCharm创建项目判断两个数值的大小,项目名称为compare,同时创建程序文件compare.py。操作步骤如下。
1)执行“File”→“New Project”菜单命令创建compare项目,如图3-1所示。

图3-1 使用PyCharm新建项目
2)配置新项目名称为compare,项目解释器使用的虚拟环境路径为H:\python,如图3-2所示。

图3-2 配置compare虚拟环境路径
3)在虚拟环境中,右击Python项目,在弹出的快捷菜单中选择New→Python File操作命令,新建一个Python File文件,名字命名为compare,创建新的Python程序文件如图3-3、图3-4所示。

图3-3 创建新的Python程序文件

图3-4 设置程序文件名为compare
4)compare文件创建成功,如图3-5所示。

图3-5 compare文件创建成功
在创建的compare.py (Prac 3-1)程序文件中添加代码,代码内容如下。
Prac 3-1: compare.py

5)运行compare.py文件,运行结果如图3-6所示。

图3-6 compare运行结果
3.2.2 if语句基本结构与示例
在Python编程语言中,if语句是简单的条件判断语句,它可以对程序的执行流程进行控制,其基本结构如下。

上述结构中,只有判断表达式成立,才可以执行下面的语句块。其中,判断表达式成立指的是判断表达式的结果为True。接下来通过一张流程图来描述if语句的执行流程,如图3-7所示。

图3-7 if语句流程图
为了帮助读者更好地理解if语句,接下来通过对课程名称的判断的示例进行学习,如果为“Python”,输出欢迎信息。

从上例中可以看出if判断语句的作用:只有当满足一定条件时,才会执行指定代码,否则就不执行。
3.2.3 if…else语句基本结构与示例
当使用if语句的时候,它只能做到满足条件时要做的事情。那么,如果不满足条件,需要做其他的事情,该怎么办呢?这时就可以使用if…else语句。它的作用是根据所判断的条件是否满足来决定执行哪个语句块,if…else语句的基本结构如下。

在Python编程语言指定任何非0和非空(null)值为True,0和null为False。当“判断表达式”成立时(非零),则执行后面的语句,执行内容可以是多行,以缩进来区分表示同一范围;else为可选语句,当条件不成立时执行相关语句。接下来,通过一张流程图来描述if…else语句的执行过程,如图3-8所示。

图3-8 if…else语句流程图
根据Python代码缩进原则,if和else必须对齐,以表示它们是同一层次的语句,各执行语句块中的代码同样必须对齐。如下示例,判断一个变量是否为正数,并将结果输出到屏幕上。

执行if语句时,Python首先执行判断表达式“x>0”,当执行结果为True时,执行if部分的语句块,否则执行else部分的语句块。
3.2.4 多路分支
if语句的判断表达式可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。多路分支if语句由if、一个或多个elif和else部分组成,else部分可以省略,基本结构如下。


如下示例,判断成绩为哪种等级,并将最终等级输出到屏幕上。

Python在执行多路分支if语句时,按照先后顺序依次判断各表达式。当前面的判断表达式为假时,才会执行下一个判断表达式,否则执行相应的语句块,如果所有的判断表达式均为假,则执行else部分的语句块。
3.2.5 分支嵌套
在if语句分支嵌套中,可以把if...elif...else结构放在另外一个if...elif...else结构中,它的基本结构如下。

如下示例,判断一个数是否可以整除2和3,并将结果输出到屏幕上。


Python在执行if分支嵌套时,首先判断num%2是否等于0,如果等于0,则执行if后面的嵌套语句,否则执行else后面的嵌套语句。