条件控制
Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。
可以通过下图来简单了解条件语句的执行过程:
if 语句
if 语句是最基本的条件语句,它用于判断一个条件是否为真,如果为真,则执行对应的代码块,否则,则忽略该代码块。
语法格式如下:
python
if 条件表达式:
代码块
例如:
python
num = 10
if num > 5:
print("num is greater than 5")
- 首先,判断
num
是否大于 5,由于num
为 10,所以结果为True
,因此执行print("num is greater than 5")
语句。 - 然后,程序继续执行,并没有遇到
else
语句,因此程序结束。
if...else 语句
if...else 语句是 if 语句的扩展,它在判断条件为真时执行 if 代码块,否则执行 else 代码块。
语法格式如下:
python
if 条件表达式:
代码块1
else:
代码块2
例如:
python
num = 10
if num > 5:
print("num is greater than 5")
else:
print("num is not greater than 5")
- 首先,判断
num
是否大于 5,由于num
为 10,所以结果为True
,因此执行print("num is greater than 5")
语句。 - 然后,程序继续执行,并没有遇到
else
语句,因此程序结束。
if...elif...else 语句
if...elif...else 语句是 if...else 语句的扩展,它可以在多个条件判断中选择执行哪个代码块。
语法格式如下:
python
if 条件表达式1:
代码块1
elif 条件表达式2:
代码块2
elif 条件表达式3:
代码块3
...
else:
代码块n
例如:
python
num = 10
if num > 5:
print("num is greater than 5")
elif num < 5:
print("num is less than 5")
else:
print("num is equal to 5")
- 首先,判断
num
是否大于 5,由于num
为 10,所以结果为True
,因此执行print("num is greater than 5")
语句。 - 然后,程序继续执行,并没有遇到
elif
语句,因此程序结束。
嵌套条件语句
Python 允许在 if...elif...else 语句中嵌套 if...elif...else 语句,即在 if...elif...else 语句中使用另一个 if...elif...else 语句。
例如:
python
num = 10
if num > 5:
print("num is greater than 5")
if num > 10:
print("num is also greater than 10")
else:
print("num is not greater than 10")
elif num < 5:
print("num is less than 5")
else:
print("num is equal to 5")
- 首先,判断
num
是否大于 5,由于num
为 10,所以结果为True
,因此执行print("num is greater than 5")
语句。 - 然后,判断
num
是否大于 10,由于num
为 10,所以结果为False
,因此执行print("num is not greater than 10")
语句。 - 最后,程序继续执行,并没有遇到
else
语句,因此程序结束。
match...case
3.10 版新增了一个新的语法 match...case
,它可以用来替代多个 if...elif...else 语句。
python
match 变量:
case 值1:
代码块1
case 值2:
代码块2
case 值3:
代码块3
...
case 值n:
代码块n
case _:
代码块默认
- 首先,判断
变量
是否等于值1
,由于变量
为值1
,所以结果为True
,因此执行代码块1
语句。 - 然后,程序继续执行,并没有遇到
case
语句,因此程序结束。 case_
语句是一种特殊的case
语句,它用于匹配所有其他的值。类似于default
语句,它必须放在最后,并且只能有一个。
例如:
python
num = 10
match num:
case 10:
print("num is 10")
case 5:
print("num is 5")
case _:
print("num is not 10 or 5")