Python机器学习
上QQ阅读APP看书,第一时间看更新

2.3 分支结构

分支结构又称选择结构,它根据给定条件的真假,决定程序的执行路线。根据程序执行的路线或分支的不同,分支结构又分为单分支、双分支和多分支3种类型。例如,输入学生的成绩,需要统计及格学生的人数、统计及格和不及格学生的人数、统计不同分数段学生的人数,这里就涉及单分支、双分支和多分支的分支结构。

2.3.1 分支语句

1.单分支if语句

if语句由4部分组成:关键字if、条件表达式、冒号和表达式结果为真(非零、非空)时要执行的语句体。if语句的语法格式如下:

单分支if语句的流程图如图2-2所示。

单分支if语句先判断条件表达式的值是真还是假。如果条件表达式的值为真(非零、非空),则执行语句体中的操作;如果条件表达式的值为假(零、空),则不执行语句体中的操作。语句体既可以包含多条语句,也可以只由一条语句组成。

2.双分支if-else语句

双分支if-else语句的语法格式如下:

双分支if-else语句的流程图如图2-3所示。

图2-2 单分支if语句流程图

图2-3 双分支if-else语句流程图

双分支if-else语句先判断条件表达式值的真假。如果条件表达式的值为真,则执行语句体1中的操作;如果条件表达式的值为假,则执行语句体2中的操作。语句块1和语句块2既可以包含多条语句,也可以只由一条语句组成。

3.多分支if-elif-else语句

多分支if-elif-else语句的语法格式如下:

多分支if-elif-else语句的流程图如图2-4所示。

多分支if-elif-else语句先判断条件表达式1的结果为真,则执行语句块1中的操作;如果条件表达式1的结果为假,则继续判断条件表达式2;如果条件表达式2的结果为真,则执行语句块2的操作;如果条件表达式2的结果为假,则继续判断表达式3;……从上到下依次判断条件表达式,找到第一个为真的条件表达式,就执行该条件表达式下的语句块,不再判断剩余的条件表达式。如果所有条件表达式均为假,则执行else后面的语句块n+1;如果没有else分支,则不执行任何操作。任何一个分支后面的语句块执行后,都直接结束该分支语句。

图2-4 多分支if-elif-else语句流程图

2.3.2 分支结构程序举例

【例2-3】编写程序,实现从键盘输入两个整数a和b,按从大到小的顺序输出。

分析:输入a和b,如果a<b,则交换a和b,否则不交换,最后输出a和b。

参考程序如下:

程序运行结果如下:

【例2-4】编写程序,实现从键盘输入年份year,判断该年份是否为闰年,若是闰年,则输出“year年是闰年”,否则输出“year年不是闰年”,其中,year用输入的年份代替。判断闰年的方法:如果年份year能被400整除,或者能被4整除但不能被100整除,则该年份为闰年。

分析:根据闰年判断条件,若满足year%400==0或者year%4==0 and year%100 !=0则为闰年,否则不是闰年。

参考程序如下:

运行3次程序,分别输入年份2000、2013和2020,程序运行结果如下。

程序第一次运行结果:

程序第二次运行结果:

程序第三次运行结果:

【例2-5】编写程序,从键盘输入学生成绩score,按输入成绩输出其对应的等级:score90为优,80score<90为良,70score<80为中等,60score<70为及格,score<60为不及格。

参考程序如下:

运行3次程序,分别输入成绩90、79和67,程序运行结果如下。

程序第一次运行结果:

程序第二次运行结果:

程序第三次运行结果: