
3.3.3 多分支结构
双分支结构只能根据条件表达式的值为真或假决定执行两个分支中的一个。当实际处理的问题有多个条件时,需要用到多分支结构。在Python中,用if-elif-else描述多分支结构,其语法格式如下:

注意以下问题:
(1)无论有多少个分支,程序在执行了一个分支后,其余分支不再执行。
(2)elif不能写成elseif。
(3)当多分支中有多个条件表达式同时满足时,只执行第一个与之匹配的语句块。因此,要注意多分支中条件表达式的书写次序,防止某些值被过滤。
多分支结构是双分支结构的扩展,这种形式通常用于设置同一个判断条件的多条执行路径。Python测试条件的顺序为条件表达式1、条件表达式2……一旦遇到某个条件表达式的值为真的情况,则执行该条件下的语句块,然后跳出分支结构。如果没有条件表达式的值为真,则执行else后的语句块。if-elif-else语句的作用是根据条件表达式的值确定执行哪个语句块。其流程图如图3-12所示。

图3-12 if-eIif-eIse语句的流程图
【范例3-6】简单多分支学生成绩评定。
【范例描述】(源代码3.6.py)
本范例根据用户输入的成绩(score)值,判断成绩所在的等级并输出考试评级(A、B、C、D)。这里的评级标准是:90分以上为A级,80~90分为B级,70~80分为C级,60~70分为D级,低于60分为“不及格”。
【范例源码与注释】

【程序运行】
保存并打开(3.6.py)程序,按下“F5”键运行程序。在提示光标处输入80,通过程序运行判断,则会执行第二条判断和语句的输出,如图3-13所示。

【范例分析】
该程序是一个if-elif-else语句的多分支结构的程序,在执行过程中会根据用户输入的考试成绩依次和判断条件进行比较,当某个判断条件成立时,执行该判断条件下的语句块。

图3-13 考试成绩评级结果