
2.1.1 选择语句
选择语句对应选择执行,选择语句包括三种:if语句,if…else语句和if…elif…else语句。这三种选择语句之间也可以相互嵌套。
1.if语句
if语句相当于“如果……就……”,基本语法格式为:
if 表达式: 代码块
表达式可以为一个布尔值或者变量,也可以是比较表达式或者逻辑表达式,如果表达式的值为真(True),则执行下面的代码块,如果表达式的值为假(False),则跳过下面的代码块,执行代码块后面的语句。需要注意的是,当表达式的值为非零的数字或者非空的字符串时,if语句也会认为是条件成立。
2.if…else语句
if…else语句相当于“如果……就……,否则……”,基本语法格式为:
if 表达式: 代码块1 else: 代码块2
表达式可以为一个布尔值或者变量,也可以是比较表达式或者逻辑表达式。如果表达式的值为真(True),则执行代码块1,如果表达式的值为假(False),则执行代码块2。
if…else语句也可以简化为条件表达式,比如在输入年份时,如果想要把2022年以前的年份统一设置为2022年,则输入以下代码:
x=2022 # 为x赋值 if x>2022: # 如果x大于2022,则y=x,否则y=2022 y=x else: y=2022 print(y) # 输出y的值
上述代码也可以简化为条件表达式:
x=2022 # 为x赋值 y=x if x>2022 else 2022 # 通过条件表达式得到y值 print(y) # 输出y的值
3.if…elif…else语句
if…elif…else语句相当于“如果……则……,否则如果满足某种条件则……,不满足某种条件则……,”,基本语法格式为:
if 表达式1: 代码块1 elif表达式2: 代码块2 elif表达式3: 代码块3 … else: 代码块n
表达式可以为一个布尔值或者变量,也可以是比较表达式或者逻辑表达式。如果表达式1的值为真(True),则执行代码块1;否则判断表达式2,如果表达式2的值为真(True)则执行代码块2,如果表达式2的值不为真,则继续向下判断表达式3……最后如果所有的表达式均不为真,则执行代码块n。
4.三种选择语句之间的嵌套
在if语句中嵌套if…else语句:
if 表达式1: if 表达式2: 代码块1 else: 代码块2
上述语句的意思是,如果表达式1的值为真(True),则执行下面的if…else语句,否则跳过下面的代码块,执行代码块2后面的语句。
在if…else语句中嵌套if…else语句:
if 表达式1: if 表达式2: 代码块1 else: 代码块2 else: if 表达式3: 代码块3 else: 代码块4
上述语句的意思是,如果表达式1的值为真(True),则执行第一条if…else语句;如果表达式1的值不为真,则执行第二条执行if…else语句。
注意
在Python中,流程控制语句的代码之间需要区分层次,采取的方式是使用代码缩进和冒号(:)。行尾的冒号和下一行的缩进表示一个代码块的开始,而缩进结束则代码块也就结束。同一层次代码块的缩进量必须相同,一般情况下以4个空格作为一个缩进量,如果同一层次代码块的缩进量不同或输入的空格数不同,系统就会提示错误。