由于 if-else 语句中的可以由任何 Python 语句组成,因此我们 可以再使用一条 if-else 语句,这称为语句的嵌套。分析上面这段代码可知,两条嵌套的 if-else 语句确实实现了三个分支,分别处理 c>=35、c<=-6 和-6<c<35 等三种情形。参见图 3.6, 其中顶层控制结构是一条 if-else 语句,虚线框整体视为它的一个分支;虚线框内是另一条 if-else 语句,它嵌套在顶层条件语句的 else 部分中。

    用嵌套 if-else 语句虽然能实现三路分支,但并非最好的方法。首先,这种用两个二路分 支来间接实现一个三路分支的做法使得三个分支不在一个层次上,不太符合原问题中的三个 并列分支的题意。其次,这种做法不适合需要更多分支的问题,例如实现五路分支时就必须 采用四层嵌套的 if-else 结构,这会使程序看上去非常难读,尤其是 Python 所要求的下层结构向右缩进的特点会使这条嵌套语句在水平方向占据过宽的空间,导致代码更加难读。

    Python 中有一个更好的做法来写多路分支的条件判断,即 if-elif-else 语句。这条语句在 形式上其实是将嵌套 if-else 语句中的 else 与后续的 if 合并成了一个 elif 子句,形如:

    不难看出,if-elif-else 语句既能像嵌套 if-else 结构一样实现多路分支,又具有各分支并列 的整齐划一的代码形式,这就解决了嵌套 if-else 语句的两个不足之处。下面我们利用 if-elif-else 结构来进一步改进温度转换程序:

    【程序 3.4】eg3_4.py