本篇介绍Python判断语句的使用,主要讨论简单条件语句、多重条件语句和嵌套条件语句,在讲解的每个案例中都配有流程图和代码说明。通过本篇的学习,可以达成如下目标。
● 掌握判断语句的使用规则
● 判断语句流程图的画法
前面我们学习了Python的数据类型和相关知识,现在可以开始编写Python程序了,首先从条件判断开始。
1、 简单if-else语句
例1:要求用户输入两个数,计算两数的和。如果这两个数的和大于100,则输出“两数和大于100”,否则输出“两数和小于100”。
程序要求用户从键盘输入两个整数,求这两个整数的和。如果和大于100,用print语句输出“两数和大于100”,否则输出“两数和小于100”。程序流程图如下:
图 1 例1流程图
流程图用到了判断框,判断框用于判断两数和结果result的值,并根据判断情况选择不同的分支。类似这样的判断情况,在程序中应用非常广泛,需要对条件进行判断,并根据判断结果,进入不同的分支程序。这种流程称为条件分支流程,其语句结构也称为条件结构。
在Python语言中,条件结构由if—else语句构成,else语句也可以省略。if语句由三部分组成:关键字本身,用于判断结果真假的条件表达式,以及当表达式为真或者非零时执行的代码块。else 语句与if语句搭配使用,如果if语句条件表达式的值为真,则执行if 后面的语句块;如果if语句条件表达式的值为假,则执行else后面的语句块。
if—else语句语法如下:
if 条件表达式:
语句块
else:
语句块
在if—else语句结构中,如果只对if语句条件表达式为真的情况进行处理,else语句可以省略。现在,我们已经了解了Python语言if-else结构的语法,下面探讨一下如何在条件结构中使用条件表达式。
例如:要测试两个整数类型的变量值num1和num2是否相等,可以编写num1 == num2,然后将其放入一个if语句中,如下所示:
如果num1和num2的数值相等,则条件为真,执行if后面的语句块,用print函数输出“两数相等”,否则执行else后面的语句块,用print函数输出“两数不相等”。编写代码时,if和else后面的语句块要缩进对齐。
下面根据图1所示的流程图给出例1的程序代码。
input函数从标准输入(如键盘)接收用户或设备的输入,input返回的是字符串类型,程序要求输入整数,因此计算两数和时,需要把num1和num2强制转换为整数。最后再判断result的值,根据result的值选择不同的执行路径。
2、 多重if结构语句
例2:编写一个程序,根据用户输入的考试成绩,输出相应的成绩评定信息。成绩大于等于90分输出“优”;成绩大于等于80分小于90分输出“良”;成绩大于等于60分小于80分输出“中”,成绩小于60分输出“差”。
程序的主要功能是对考生的考试成绩进行评定,成绩评定分成优、良、中、差四个档次。成绩大于等于90分为优,大于等于80分小于90分为良,大于等于60分小于80分为中,成绩小于60分为差。用户输入考试成绩后,程序需要对考试成绩进行多次判断,如果考试成绩在90分至100分之间,用print函数输出“优”;如果考试成绩在80分至90分之间,用print函数输出“良”;如果考试成绩在60分至80分之间,用print函数输出“中”;如果考试成绩在60分以下,用print函数输出“差”。程序流程图如下:
图 2 例2流程图
流程图用到了多个条件判断,如果条件的值为真,则执行某些操作,否则,进一步进行条件判断,执行其它操作。流程图中需要逐级判断输入的考试成绩在哪个分数段内,并输出相应的等级。当遇到类似这种情况时,就可使用多重if结构解决。
多重if结构实际上是if-else结构的另一种形式;if-else-if,这种形式也称为阶梯式,当有多个分支选择时,可采用多重if结构。
多重if结构语法如下:
if 条件表达式1:
语句块
elif 条件表达式2:
语句块
elif 条件表达式3:
语句块
……
else:
语句块
多重if结构从上到下依次对条件进行判断,当条件满足时就执行该条件后面的语句,并跳过其它的条件判断;若没有条件满足,则执行最后的else语句块,如果没有else语句块,则直接执行该结构后面的语句。
下面根据图2所示的流程图给出例2的程序代码。
程序使用了if-elif-else多重条件结构,每个条件表达式使用了逻辑与运算符,用于连接两个子表达式,只有两个子表达式都满足条件时,整个表达式的值才为真。
3、 嵌套if语句
前面介绍了简单if和多重if语句,可以解决很多条件判断问题。但还存在一种嵌套的判断情况,即只有当前提条件满足时,才判断后续条件是否满足。例如,如果星期日天气晴朗,且能买到去青岛的高铁票就去青岛玩,否则就在家休息。在这个例子中,第一条件是天气晴朗,在天气满足的条件下,再判断第二条件,是否能买到去青岛的高铁票,两个条件全部满足就去青岛玩,否则就在家休息。
嵌套if语句是指在已有if语句块中插入另一个if语句块,实现条件的嵌套判断,if语句块可以多层嵌套。嵌套语句语法结构如下:
if 前提条件:
if 后续条件:
语句块
else:
语句块
else:
语句块
嵌套if语句在Java、C等编程语言中,编写不规范时,有时会引发一些疑问,下面是一个Java语言的例子:
按条件语句的语法形式,上面的例子似乎有两种可能的解释,第一种理解:外层的if是一个没有else部分的条件语句,最后的else部分属于内层的if语句;第二种理解:内层if是一个不带else部分的条件语句,最后的else属于外层的if条件语句。
为了避免这种二义性,Java语言规定,每个else部分总是属于前面最近的那个缺少对应的else部分if语句。根据这一规定,上面的例子第一种解释是正确的,第二种解释是不正确的。
Python不会出现这样的疑问,Python使用强制缩进使代码正确对齐,让程序员来决定else属于哪一个if,从而减少了不确定性。例如,上面的例子代码按照第一种理解可以这么写:
Python代码可以很明显看出,else是和内层if匹配的。
例3:编写一个程序,要求用户输入两个整数,如果输入的两个整数不相等,输出最大的数。
程序的主要功能是练习嵌套if语句的使用,要求对用户输入的两个整数首先判断是否相等,在两个数相等的条件下,再判断哪个数大,并输出较大的数。程序流程图如下:
图 3 例3流程图
流程图用到了嵌套条件判断。首先判断num1和num2是否相等,如果相等,程序不做任何处理并结束程序;如果不相等,再判断num1是否大于num2,若条件满足输出num1,程序结束,否则输出num2,程序结束。
下面根据图3流程图给出例3的程序代码。
代码使用了嵌套if语句实现了程序任务要求,input获取用户输入后,返回的是字符串,需要把字符串强制转换为整数。
课程小结
(1)在Python语言中,if语句由三部分组成:关键字本身,用于判断结果真假的条件表达式,以及当表达式为真或者非零时执行的代码块。else 语句与if语句搭配使用,如果if语句条件表达式的值为真,则执行if 后面的语句块;如果if语句条件表达式的值为假,则执行else后面的语句块。
(2)多重if结构语句实际上是if-else结构的另一种形式;if-else-if,这种形式也称为阶梯式,由多个条件判断语句组成,如果条件的值为真,则执行某些操作,否则,进一步进行条件判断,执行其它操作。
(3)嵌套if语句是指在已有if语句块中插入另一个if语句块,实现条件的嵌套判断,if语句块可以多层嵌套。