3.2 嵌套条件语句

嵌套条件语句是指else语句里面又有if语句。if和else可以根据条件分两路执行,else里面又有if语句让我们可以创造超过两路的分支。格式如下:
if 条件1:
    语句1
elif 条件2:
    语句2
else:
    语句3
  
(1)else之后紧接着if语句,这里有一种紧密的写法elif,就是“否则,如果……”的意思,和else不同的事,elif后面必须有条件。
(2)如果走到条件2,说明这时候条件1不成立,也就是条件1的否定。 看下面的例子里的错误示范:
if a > 10:
    语句1
elif a > 5 and a <= 10:
    语句2
else:
     语句3
有没有发现多余的代码是什么呢? 当a大于10的时候,执行语句1,这个很容易理解。 当a大于5并且小于等于10的时候,执行语句2。但这个时候,其实已经没有必要写a<=10这个条件了!这是必定成立的,因为能执行到语句2,肯定已经是a>10的否定了,也就是a<=10。a>5 && a<=10在这里就相当于a>5 && true,所以a<=10是没必要写的。
下面是一个评分程序,当分数是90到100分的时候,评级A;75到90的时候,评级B,其余的分数评为C:
s=int(input("请输入一个分数"))
if 90<= s <= 100:
    print("A")
elif s >=75:
    print("B")
else:
    print("C")
注意写第二个条件的时候,不需要写s<90 ,因为s必定小于90,否则就打印A了。
嵌套条件语句还需要注意下面代码的情况:
if a > 10:
    语句1
elif a > 15:
    语句2
elif a > 5:
    语句3
这样的语句不会有语法错误,但有逻辑错误。思考一下,语句2在什么情况下才会被执行到?应该怎么修改?
实际上,语句2永远不会被执行到!
因为语句2的条件实际上是:a<=10 并且a>15,这是一个空集。下面把前两个条件的顺序改动了一下,三条分叉就可以都达到了:
if a > 15:
    语句1
elif a > 10:
    语句2
elif a > 5:
    语句3