![零基础学Python程序设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/24/43738024/b_43738024.jpg)
6.3 if-elif-else语句
在网上购物时通常会有多种付款方式,用户可以从中选择一个。这是一种典型的多选一情况。在Python中,可以使用if-elif-else语句来表示这种情况。本节介绍if-elif-else语句的相关知识。
6.3.1 多分支结构
if-elif-else是一个多分支结构,是由if、elif和else共同构成的选择语句。它在if-else语句的基础上使用保留字elif进行扩展。当不满足if语句中指定的条件时,继续使用elif语句指定另一个或若干个条件进行判断。若仍然没有满足条件,则最后执行else语句。其语法格式如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-131-2.jpg?sign=1738885152-OKmyhYA607w1OE3ncpbGv4P4OjSYgBb9-0-e2ed716a2d11bc903e855124b87d8b8e)
其中,elif语句可以为多个。
【实例6-11】编写if-elif-else语句,对成绩分数进行判断。例如,当成绩大于或等于90时,输出“成绩优秀”;大于或等于80时,输出“成绩良好”;大于或等于70时,输出“成绩中等”;大于或等于60时,输出“成绩较差”,除此之外的分数输出“成绩糟糕”。代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-131-3.jpg?sign=1738885152-qJdeVoIauUTMzjnQAr67vxZNYwqoq2Ve-0-468c692ce7623bbdaa2883c628723116)
6.3.2 执行流程
在执行if-elif-else语句时,先判断if语句中指定的条件,条件成立,执行if中的语句,执行完成后跳出整个if-elif-else语句,再执行if-elif-else语句以外的其他语句。如果条件不成立,就接着判断elif语句中指定的条件,若条件成立,则执行对应的语句,执行完成后跳过整个if-elif-else语句;反之,继续判断下一个elif语句中指定的条件。以此类推,直到判断完成所有的elif语句中指定的条件后,仍然没有满足条件,最后执行else语句,执行完成后执行if-elif-else语句以外的其他语句。if-elif-else语句的执行流程图如图6.9所示。
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-132-1.jpg?sign=1738885152-DqrLKSIVD4yV0SHjfmDopsB7yXf25bhT-0-38d3729ac278684d10e4e4e761a3d795)
图6.9 if-elif-else语句的执行流程图
【实例6-12】不同的年龄会上不同的学,年龄及学段对应表如表6-2所示。
表6.2 年龄及学段对应表
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-133-1.jpg?sign=1738885152-fnge1El1YxES9OSVQbzIYlR7KRxeRSv6-0-1302ad69c9c55ea84eb90744820f61d3)
表6-2中的信息可以利用if-elif-else语句实现。用户输入一个年龄,然后判断在哪个学段,并且最后始终输出一句话“过了今年你又大了一岁”。
(1)编写的代码如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-133-2.jpg?sign=1738885152-tMcZHRkeL0Dt8nNN7Uio9ATRPHS9bUOk-0-c33636f05e8e49b2f993641520a8268c)
代码的加粗部分是一个if-elif-else语句,最后一行语句为if-elif-else语句以外的其他语句。
(2)代码执行后,输入一个年龄,如8,符合该年龄段的对应的elif语句会被执行,最后一行语句也会被执行,执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-133-3.jpg?sign=1738885152-6mx1EnAcvthEXB4s0YtTJcpuwPQSVzRZ-0-17f05b15cb56f9d8e9df5636086e0b36)
年龄8满足了elif的6<=age<12条件,因此,执行了对应的语句print('你可以上小学了'),整个if-elif-else语句执行完成,继续执行if-elif-else以外的语句print('过了今年你又大了一岁')。
(3)假如,输入的年龄为2,执行结果如下:
![](https://epubservercos.yuewen.com/8FCE01/23020638509734206/epubprivate/OEBPS/Images/42185-00-133-4.jpg?sign=1738885152-mOEraipNuQkpdGKNmm9EbOaWg6Vid1hk-0-f26d9a08178ba7f5cb8b1f49c1955d79)
由于年龄2没有满足if的条件,也没有满足elif的条件,所以直接执行else对应的语句print('你还没到上学年龄'),整个if-elif-else语句执行完成,继续执行if-elif-else以外的语句print('过了今年你又大了一岁')。