零基础学Python(第2版)
上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。

注意 编写条件语句时,应该尽可能避免使用嵌套语句。嵌套语句不便于阅读,而且可能会忽略一些可能性。