
4.3 选择结构
Python通过if语句来实现分支语句。if语句具有单分支、双分支和多分支等形式。
4.3.1 单分支
if的单分支语句流程图如图4.2所示。

图4.2 if的单分支流程图
if的单分支语句书写格式如下。

Python认为非0的值为True,0为False。
【例4-7】从键盘输入两个正整数x和y并升序输出。
【解析】假设输入数字为3和5,只需顺序输出两个数。但若输入5和3,则必须将两个数交换后输出。设两个整数为x和y,引入临时变量t,通过以下3步实现x和y的交换,如图4.3所示。

图4.3 x和y交换,引入临时变量t
x和y交换过程如表4.2所示。
表4.2 交换变量图示

【代码】

4.3.2 双分支
if语句的双分支流程图如图4.4所示。当条件表达式的值为True时,程序执行语句1;当条件表达式的值为False时,程序执行语句2。

图4.4 if语句的双分支流程图
if的双分支语句书写格式如下。

【例4-8】判断5位数是不是回文数。
【解析】分解出每一位数(万位、千位、十位和个位),然后判断首尾是否相等。
【代码】

4.3.3 多分支
当分支超过两个时,采用if的多分支语句。该语句的作用是根据不同的条件表达式的值确定执行哪个语句块。
if的多分支语句格式如下所示。

多分支执行的思路如下所述。
“条件表达式1”为True将执行“语句块1”,如果为False,将判断“条件表达式2”;如果“条件表达式2”为True,将执行“语句块2”,如果为False,将执行“语句块3”;……;如果“条件表达式n”为True,将执行“语句块n”,如果为False,将执行“语句块m”语句。
if语句的多分支流程图如图4.5所示。

图4.5 if语句的多分支流程图
【例4-9】根据当前时间是上午、下午还是晚上,分别给出不同的问候信息,如表4.3所示。
表4.3 题解

(续)

【例4-10】输入学生的成绩,根据成绩进行分类,90分以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。三种代码如表4.4所示。
表4.4 题解

请分析代码(一)(二)(三)是否都正确?为什么?
4.3.4 分支嵌套
分支嵌套的形式如表4.5所示。
表4.5 分支嵌套的几种形式和对应的流程图

【例4-11】从键盘输入一个整数,判断其是否能被2或者3整除

【程序运行结果】

或者:

或者:
