![数据结构与算法(Python版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/974/41864974/b_41864974.jpg)
4.3 选择结构
Python通过if语句来实现分支语句。if语句具有单分支、双分支和多分支等形式。
4.3.1 单分支
if的单分支语句流程图如图4.2所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_66_04.jpg?sign=1739614163-7zCE3EHRAIDBl1Rxc31A1yxWbRbqOKl7-0-dadda72b947e6e85e15d8858e65c3f0d)
图4.2 if的单分支流程图
if的单分支语句书写格式如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_66_05.jpg?sign=1739614163-hEit8LAm4NslY34zKwJwBjXcSRoI0zl2-0-e549772009338939f09ef75152d22ad5)
Python认为非0的值为True,0为False。
【例4-7】从键盘输入两个正整数x和y并升序输出。
【解析】假设输入数字为3和5,只需顺序输出两个数。但若输入5和3,则必须将两个数交换后输出。设两个整数为x和y,引入临时变量t,通过以下3步实现x和y的交换,如图4.3所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_66_06.jpg?sign=1739614163-yM38Xozv6uZwkiheU19My0AtIxteZXuy-0-f66f1852ef40feb0900feabe0fbe9be4)
图4.3 x和y交换,引入临时变量t
x和y交换过程如表4.2所示。
表4.2 交换变量图示
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_66_07.jpg?sign=1739614163-jbclrAXy5CX5SILKAezRhfmehCp0dhUu-0-7269bd1ce8024dd19aedf997a407b0e8)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_01.jpg?sign=1739614163-GvYiw3Xvg0DHGSmMo84luatPYl4WMtFo-0-a367e6adcf20043dc96efe068bc09019)
4.3.2 双分支
if语句的双分支流程图如图4.4所示。当条件表达式的值为True时,程序执行语句1;当条件表达式的值为False时,程序执行语句2。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_02.jpg?sign=1739614163-1Bxa935hnkJkk3KkfRpummDz1YLd7kUx-0-04c93d3f80dc62b54f5b1e3c11becb09)
图4.4 if语句的双分支流程图
if的双分支语句书写格式如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_03.jpg?sign=1739614163-MpX5Vev1wwq77u329fSlApNz7EGljy2G-0-d39b59ce8a083691c7d320c98c3e28ab)
【例4-8】判断5位数是不是回文数。
【解析】分解出每一位数(万位、千位、十位和个位),然后判断首尾是否相等。
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_04.jpg?sign=1739614163-URW6UrX7o3axsppuv5bb3eL97j086ne2-0-033f2922530cc456d8037ef3b978973c)
4.3.3 多分支
当分支超过两个时,采用if的多分支语句。该语句的作用是根据不同的条件表达式的值确定执行哪个语句块。
if的多分支语句格式如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_68_01.jpg?sign=1739614163-Ey3mYcVwF6ZuBB700O4OIYPhoMo0FP8P-0-2b991c5e4246b4a424dc3f2ec2a79456)
多分支执行的思路如下所述。
“条件表达式1”为True将执行“语句块1”,如果为False,将判断“条件表达式2”;如果“条件表达式2”为True,将执行“语句块2”,如果为False,将执行“语句块3”;……;如果“条件表达式n”为True,将执行“语句块n”,如果为False,将执行“语句块m”语句。
if语句的多分支流程图如图4.5所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_68_02.jpg?sign=1739614163-C2oa021euE1xlfLp0HTRjj0sBqmv3g62-0-b0bce9b9ce870d71bf933f5090e68278)
图4.5 if语句的多分支流程图
【例4-9】根据当前时间是上午、下午还是晚上,分别给出不同的问候信息,如表4.3所示。
表4.3 题解
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_68_03.jpg?sign=1739614163-8tLM8T5ONxkNXwKZxRX3Dt2bfaiylDhQ-0-23991f31ceefdba7d03e9bb7f8a1aefd)
(续)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_69_01.jpg?sign=1739614163-X1eE7u6xzqMhdv0GnX8Px0kqhGSOVGMh-0-0a81e1ba3c377b409bc67036c03ab871)
【例4-10】输入学生的成绩,根据成绩进行分类,90分以上为优秀,80~89分为良好,70~79分为中等,60~69分为及格,60分以下为不及格。三种代码如表4.4所示。
表4.4 题解
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_69_02.jpg?sign=1739614163-ZTiyH7HD2kJNEGL5PlUm7JorRaR4uBYB-0-f9aab6dcdc951fe8a62bba231d1a8b6c)
请分析代码(一)(二)(三)是否都正确?为什么?
4.3.4 分支嵌套
分支嵌套的形式如表4.5所示。
表4.5 分支嵌套的几种形式和对应的流程图
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_69_03.jpg?sign=1739614163-pL2TrqWuzgni5w8js8uK7repTvV4rt4g-0-fa020f9263c4bf104530542fad9f293c)
【例4-11】从键盘输入一个整数,判断其是否能被2或者3整除
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_01.jpg?sign=1739614163-tAk34eutQi1OEERT7fCQCxdqS3xBxUMA-0-63458f455ed20f81a3a7197db01f362d)
【程序运行结果】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_02.jpg?sign=1739614163-xhdqj6K3Ilm6aZaYuhuZBD5d27Un3YhC-0-307d32ad892fd620c96a0be0272b1023)
或者:
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_03.jpg?sign=1739614163-vIO4mkNdTEBMcVYTHsPxaLBuEQTCDSA3-0-06f3e0f5eb70054c0d3ba0c4de227f5c)
或者:
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_04.jpg?sign=1739614163-oU3GXhmJYvZ2AJo32VBv6AKGogR0KPbT-0-bc9b872be83c42d207fd8f1857f42adf)