3.4.2 条件语句(if、else和elif)

对于计算机程序来说,要学会第一项技能就是"判断",也就是根据不同的条件,执行不同的程序分支,这样的程序才有意义。

if语句的作用就是为程序赋予这项"判断"的技能。使用if语句就需要用到在3.3节介绍的代码块了。Python语句要求当if语句的条件满足时要执行的代码块必须缩进(一般是缩进4个空格)。if语句的语法格式如下:

if logic expression:        #if代码块开始
    statement1
    statement2
    ...
    statementn
otherstatement                  #if代码块结束

以上代码中,logic expression表示逻辑表达式。也就是返回布尔类型有(True或False)的表达式。由于Python语句的各种数据类型都可以用作布尔类型,所以logic expression可以看作普通的表达式。根据代码块的规则,每一个代码块的开始行的结尾要使用冒号(:),如果if代码块结束,退到代码块开始行的缩进量即可。

下面是if语法的基本用法。

n = 3

if n == 3:
    print("n == 3")
print("if代码块结束")
n == 3
if代码块结束

在上面这段代码中,"n == 3"是逻辑表达式,本例中的值为True。而"print("n == 3")"是if代码块中的语句,由于"n == 3"的值为True,所以"print("n == 3")"会被执行。最后一条语句不属于if代码块,所以无论if语句的条件为True或者False,这行代码都会被执行。

对于条件语句来说,往往分支不止一个。例如,上面的代码如果变量n的值是4,那么if语句的条件就为False,这时要执行条件为False的分支,就可以使用else子句。

n = 4

if n == 3:
    print("n == 3")
else:
    print("n == 4")
print("if代码块结束")
n == 4
if代码块结束

在上面这段代码中,n等于4,所以if语句的条件为False,因此else代码块中的语句会被执行。if与else都是代码块,所以if语句和else语句后面都要以冒号(:)结尾。

在多分之条件语句,需要使用elif子句设置更多的条件。elif后面跟逻辑表达式,elif也是代码块,所以后面要用冒号(:)结尾。另外,在if语句中,if和else部分只能有一个,而elif部分可以有多个。

n = 4

if n == 3:
    print("n == 3")
elif n == 4:
    print("n == 4")
elif n == 5:
    print("n == 5")
elif n == 6:
    print("n == 6")
else:
    print("n等于其他值")
print("if代码块结束")
n == 4
if代码块结束

[例 3.3] 本例通过raw_input函数从控制台输入一个名字,然后通过条件语句判断名字以书面字母开头。

from click._compat import raw_input
name = raw_input("请输入你的名字:")
if name.startswith("B")
    print("名字以B开头")
elif name.startswith("A")
    print("名字以A开头")
elif name.startswith("F")
    print("名字以F开头")
else:
    print("名字以其他字母开头")