![数据结构与算法(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=1739323001-7WF9PyXvQjz6Uuozj7yzqFkbuRixL87u-0-279b5fde7366a91bd214f0303ca64872)
图4.2 if的单分支流程图
if的单分支语句书写格式如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_66_05.jpg?sign=1739323001-g68El8mi3HRhz2wAg8bbJsx6OhoibU6L-0-9476267be662e1f2659a93d760788994)
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=1739323001-j36eDTggXe1ebGt2ZHxW19CohjrVFXbw-0-0437a78da72ec6a76270a4a6258f253e)
图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=1739323001-mZRbVEXTuakbs7V33YflRPM9ELvrjG7e-0-cc88473654de1f4fc743fee1acc1b09f)
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_01.jpg?sign=1739323001-gXxBqpZdZ5HgUeiEAEujQ54MF3EmV2g6-0-c3cd5fa11ba5456603f2c35a71c85e9b)
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=1739323001-kw2L8f5ptcKiNFJB9DEuNG46n6wWCxBf-0-c87d91ce573ccca1b37c258d4b74cbe0)
图4.4 if语句的双分支流程图
if的双分支语句书写格式如下。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_03.jpg?sign=1739323001-aFJGKv1R7AMaWiQ4gchbbomHrDRlWEtV-0-91b10a07b65e1c24e45c26c5e04a076d)
【例4-8】判断5位数是不是回文数。
【解析】分解出每一位数(万位、千位、十位和个位),然后判断首尾是否相等。
【代码】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_67_04.jpg?sign=1739323001-U13NRP3mEOvLU0adjjCspSMuNGpsPKdF-0-31b241413fc7a8b125c5b005d37babb7)
4.3.3 多分支
当分支超过两个时,采用if的多分支语句。该语句的作用是根据不同的条件表达式的值确定执行哪个语句块。
if的多分支语句格式如下所示。
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_68_01.jpg?sign=1739323001-q7wFK7dcoX17yBXR5kZZvqWGBnspg0WA-0-78e830ebd8cec1a9e3c80bde3ba0338d)
多分支执行的思路如下所述。
“条件表达式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=1739323001-ANcUYMRPFRNa2OAkTkRSSCNz2uXjDIX5-0-791391f7a35e0fb4dda72726282d6e4e)
图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=1739323001-9BgKsRaGsrPFihxyQ3H0LRfubeJqyf1X-0-b2bc2da0655b886e20a248aab9f61de6)
(续)
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_69_01.jpg?sign=1739323001-ZunV4KpLgGzPfkS8jMU2kQby5dlp949M-0-79aa4667328d9ca13a14a24a5a24dcd7)
【例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=1739323001-JtvurYnEWxL87K6oTnwZvMGJuFjEOo3b-0-b661402170b91613f1b9bd2a0afb5448)
请分析代码(一)(二)(三)是否都正确?为什么?
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=1739323001-5rhOSXMfJKo5rHJFgn4Tmvv4YVZJ20f8-0-5a13e64479f8cd83e4ccaf9527b9a5d4)
【例4-11】从键盘输入一个整数,判断其是否能被2或者3整除
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_01.jpg?sign=1739323001-NTEWaZSAGM20DoTjtgDE30IsHvaBXTGG-0-29a4a0bdd95c2a0a5e52f3690eadd27f)
【程序运行结果】
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_02.jpg?sign=1739323001-VV8IpizjrAMY67Qzj0sN12MdGJLtUAdI-0-ff4def5262c62be811a72d36f5e77f51)
或者:
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_03.jpg?sign=1739323001-WfHCLQLIY7jgZQleL4rJHR57sGkuV6CF-0-bcfc93008c31f9f20fb42300935e5467)
或者:
![](https://epubservercos.yuewen.com/3C8452/21889219301185006/epubprivate/OEBPS/Images/978-7-111-66363-8_70_04.jpg?sign=1739323001-kSAw6yE0oewMOymwwSiptZXXyRGSsSKm-0-b2de240bafcb77bf343b1e1e02a2a77e)