
3.2.1 if-else条件语句

3.2.1 if-else条件语句
1.if-else语句的语法格式
Python中的单条件双分支选择结构使用if-else语句,其语法格式为:

说明:
1)if-else语句的执行流程是:当程序运行到if时,首先测试“条件”,如果为True,则执行“条件为真时执行的语句块”,然后执行整个if-else语句后面的语句。如果“条件”为False,且有else子句,则执行else部分的“条件为假时执行的语句块”,然后执行if-else语句后面的语句。两个分支的语句块只执行其中一个,不会两个语句块都执行。
2)“条件”可以是关系表示式或逻辑表达式,也可以是各种类型的数据。对于数值型数据(int、float、complex),非零为True,零为False。对于字符串或集合类数据,空字符串或空集合为False,其余为True。也就是说,表达式可以是任意类型,各种代表0或“空”的None、空字符串、空元组、空列表、空字典都会被当成False处理。
3)条件和else后面的冒号“:”不能省略,表示接下来是满足条件后要执行的语句块。
4)else分支可以省略,成为单分支选择结构。单分支选择结构的if语句的语法格式如下:

在单分支选择结构中,当条件为True时执行“条件为真时执行的语句块”,然后执行if语句之后的语句;当条件为False时,直接执行if语句之后的语句。else不能单独使用。
【例3-8】 没有else分支的if语句示例。

运行上面的程序,如果输入年龄大于或等于18,例如输入20,运行结果如图3-4所示。
如果输入的年龄小于18,则运行结果如图3-5所示。

图3-4输入20时的运行结果

图3-5 输入17时的运行结果
5)Python使用严格的缩进来划分语句块,相同缩进数的语句在一起组成一个语句块,一定要缩进,只有缩进后的语句才是条件执行的语句块。使用空格键缩进,不要用制表符<Tab>键。和语法相关的每一层缩进建议缩进4个空格。如果语句缩进不规范,Python解释器会报错。
2.if-else语句使用实例
【例3-9】 输入x,计算y的值。其中:
分析:该题是数学中的一个分段函数,它表示当x≥0时,用公式y=1+x来计算y的值;当x<0时,用公式y=1-2x来计算y的值。在选择条件时,既可以选择x≥0作为条件,也可以选择x<0作为条件。在这里选x≥0作为选择条件。当x≥0为真时,执行y=1+x;当x≥0为假时,执行y=1-2x。
程序如下:

【例3-10】 输入两个整数,按照从大到小的顺序输出这两个数。


实现一个问题有多种编写程序的方法,改成下面的程序会更容易阅读。
