
上QQ阅读APP看书,第一时间看更新
3.2.3 if语句也可以嵌套
if语句的嵌套是指if语句中可以包含一个或多个if语句。嵌套的格式如下所示。
01 if(表达式1): 02 if(表达式2): 语句1 03 elif(表达式3): 语句2 04 … 05 else: 语句3 06 elif(表达式n): 07 … 08 else: 09 …
下面【例3-3】中的这段代码是一个嵌套的条件语句。如果x的值大于0,则y的值等于1;如果x的值等于0,则y的值等于0;如果x的值小于0,则y的值等于-1。
【例3-3.py】
01 x = -1 02 y = 99 03 if(x >= 0): 04 if(x > 0): #嵌套的if语句 05 y = 1 06 else: 07 y = 0 08 else: 09 y = -1 10 print ("y =", y)
【代码说明】
·第2行代码定义了一个变量y。为了不和最终可能的输出结果1、0、-1重复,设置y的初始值为99。
·第3行代码判断变量x的值。如果x大于等于0,则执行下面嵌套的if语句。
·第4行代码,判读x的值是否大于0。如果大于0,则执行第5行代码;否则,执行第7行代码。
·第8行代码,如果变量x的值小于0,则执行第9行代码。
·第9行代码,由于变量x的值为-1,因此y的值等于-1。
·第10行代码的输出结果为-1。
嵌套语句可以组合出很多写法,但是要注意把所有的分支情况都考虑到。下面的这种写法是错误的。
01 # 错误的嵌套语句 02 x = -1 03 y = 99 04 if(x != 0): # 如果x不等于0 05 if(x > 0): #嵌套的if语句 06 y = 1 07 else: 08 y = 0 09 print ("y =", y)
【代码说明】
·第4行代码判断变量x的值是否等于0。如果不等于0,则执行if语句下面的代码块;否则执行else子句的代码。由于x的值等于-1,程序流转到第5行。
·第5行代码判断变量x的值是否大于0。如果大于0,则变量y的值设置为1。由于这里没有考虑到变量x小于0的情况,所以程序直接跳转到第9行。
·第9行代码,变量y的值并没有被改变,程序的分支结构没有考虑到x小于0的情况,所以最终输出的不是期望中的结果。输出结果为99。
注意 编写条件语句时,应该尽可能避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。