4 分支语句if

前述章节介绍了数据、表达式和语句等基本概念,程序的基本组成单位是语句。

4.1 程序的基本结构

写入程序里的各条语句如果在程序被执行时一条条按顺序执行各条语句,那么这个程序的结构称之为顺序型程序,即每条语句的执行按其书写时的位置依次执行。顺序型结构的程序一般适用于较为简单的应用环境或者是在学习某语言的初级阶段较为常见,更多的实际应用型程序基本都不是这类简单的顺序型结构程序,而是会根据应用场景和条件有选择的执行整个程序里的部分代码,这种类型结构的程序称之为分支(选择)型程序,还有一种程序结构也比较常见就是循环体类型的程序,其结构特点是程序里的某些语句尽管出现一次,但在一定时间内连续被执行了多遍。掌握了这三种程序类型,就掌握了多数计算机语言编程的核心,而Python语言对于这几种结构的程序实现都比较容易理解,从而在学习了Python语言之后去学习其他语言编程,程序核心设计思想已经掌握,学其他语言就不难。

4.1.1 顺序程序

最简单的程序就是顺序结构的程序设计,这类程序较简单,一般出现学习某语言的初级阶段,可以很好的学习某语言的基础知识,例如:求两数之和这类问题基本用顺序结构的程序就可完成。

a = 12
b = 13
c = a + b
print "c =", c

4.1.2 分支程序

分支程序的特点是程序被执行时根据一定的条件有些语句没有机会被执行,满足某条件的时候执行一部分语句,不满足时执行另一部分语句,即有选择性的执行部分语句,即分支型结构的程序。这样可以看出分支程序有三个部分:条件、条件满足时执行的语句和条件不满足时执行的语句。

if语句结构

条件一般是关系表达式,条件介于if关键字和冒号(:)之间,在if之下是条件满足时需要执行的语句,可以多条语句称之为语句块。 与if对齐的else下面的语句是条件不满足时执行的语句,需要注意的是else后有冒号但没有条件。 还有一个为多数初学者不太习惯的地方就是,if和else下的每条语句前都要按一下Tab键进行缩进对齐,很多人不太习惯。

if 条件:
    语句1
    语句2
    ....
else:
    语句a
    语句b
    ...

以判断是否为成人公民为例展示一下if分支程序的使用。

a = 12
if a < 18:
    print a
    print "young!"
else:
    print a
    print "adult!"

程序里的a变量的值为12,对于if分支语句的条件"a < 18"的关系表达式计算结果为真(True),故整个if_else分支语句结构的条件为真,执行if语句下的两条语句,打印了"young!"字符串。

如果a被赋值大于18,例如a = 20,那么条件"a < 18"为假(False)执行else语句下的两条语句,打印出"adult!"字符串。

由此可见,从代码的第2行到第7行,由于第2行的if的条件"a < 18"的满足与否决定执行语句代码第3~4行还是语句代码块第6~7行,故整个程序被执行的时候会依据情况(条件)有选择的执行某些语句。

4.1.3 循环体结构程序

本章不重点讲解循环体,只是展示一下循环体结构的程序特点,后续章节会结合其他集合数据类型综合展示循环体的魅力。循环体和分支在Python里的结构差别仅仅需要将if换成while即可,但循环体不像分支if那样其下的语句块只被执行一次,while循环体下的语句块可能会被执行多次,即while后的条件满足执行其下语句块内容,执行完毕后又会回到while再看看其条件是否满足,如果满足执行其下语句序列块,周而复始,直到某次回到while这行看条件满足嘛?不满足执行其else下的语句块,从而完成循环,因此在while下的语句块里一般要有修改某变量的语句从而影响while的条件的真和假的可能。

a = 12
while a < 18:
    print a
    print "young!"
    a = a + 1
else:
    print a
    print "Adult"

本节while程序和上节的if程序几乎一样,区别在于if换成了while,while下多了一条a = a + 1语句,正是这条a = a + 1语句的不断地被重复才使得条件a < 18由真真...最终可能被变成假。

4.2 其他分支结构

4.2.1单分支

if_else分支结构的else可以不出现,只有if即单分支。

a = 12
if a > 20:
    print "lager than 20"
b = 13

4.2.2 多分支

if_else是二分支结构只有一个可判断的条件,而python里有多条件判断的分支结构,实现多个条件的判断和一个else,其结构如下所示:

if 条件1:
    语句
    ....
elif 条件2:
    语句
    ...
elif 条件3:
    语句
    ...
.
.
.
else:
    语句
    ...

举个多分支结构的简单例子:打印成绩评定优、良、中、及格、不及格的评级程序。

a = 65 # 55 75 85 95
if a >= 90:
    print "you"
elif a >= 80:
    print "liang"
elif a >= 70:
    print "zhong"
elif a >= 60:
    print "ji ge"
else:
    print "bu ji ge"

4.3 分支的嵌套

if_else分支语句其下的语句块里的语句也可有if_else语句即分支的嵌套,上节的评级程序可以用if嵌套来完成。

a = 55
if a >= 60:
    if a >= 70:
        if a >= 80:
            if a >= 90:
                print "you"
            else:
                print "liang"
        else:
            print "zhong"
    else:
        print "ji ge"
else:
    print "bu ji ge"