Python支持通过保留字not、and和or对判断条件进行逻辑组合:
运算符 | 含义 |
== | 等于 |
!= | 不等于 |
> | 大于 |
>= | 大于等于 |
< | 小于 |
<= | 小于等于 |
单分支选择结构:
if condition:
# 如果为真执行这段代码
else
# 如果不为真执行这段代码
多分支选择:
if conidtion1:
#若conidtion1为真,执行这段代码
elif condition2:
#若condition1为假且conidtion2为真,执行这段代码
else:
#若condition都为假,执行这段代码
注:根据condition的数量,可以增加elif的数量
嵌套选择:
if condition1:
#若condition1为真执行这段代码
if condition2:
#若condition1为真且condition2为真执行这段代码
#若condition1为真执行这段代码
else:
#若condition1为假执行这段代码
三元表达式:
<若condition为真执行这段语句> if condition else <若condition为假执行这段语句>
match表面上像 C、Java 或 JavaScript(以及许多其他程序设计语言)中的 switch 语句,但其实它更像 Rust 或 Haskell 中的模式匹配。只有第一个匹配的模式会被执行,并且它还可以提取值的组成部分(序列的元素或对象的属性)赋给变量。
match expression:
case pattern1:
# do something
case pattern2:
# do something
...
case _:
# default case
expression为要匹配的表达式,case后面跟着的是匹配模式,可以是常量、变量、类型或结构体等等。在match语句执行时,程序会逐一按照case语句中的顺序匹配每个模式,如果匹配成功则执行对应的代码块,否则继续匹配下一个模式。如果都没有匹配成功,就会执行最后的默认case语句。
match status:
case 400:
return "Bad request"
case 404:
return "Not found"
case 418:
return "I'm a teapot"
case _:
return "Something's wrong with the internet"
可以使用or 或者 “|”在一个模式中组合几个字面值:
case value1 | value2 | value3:
# 若比较对象与以上任何一个值相符,执行这段语句
# point is an (x, y) tuple
match point:
case (0, 0):
print("Origin")
case (0, y):
print(f"Y={y}")
case (x, 0):
print(f"X={x}")
case (x, y):
print(f"X={x}, Y={y}")
case _:
raise ValueError("Not a point")
第一个模式有两个字面值,可视为前述字面值模式的扩展。接下来的两个模式结合了一个字面值和一个变量,变量绑定了来自主语point的一个值。第四个模式捕获了两个值,使其在概念上与解包赋值(x, y) = point 类似。
for 循环变量 in 可迭代对象:
#代码块
可迭代对象包括:列表、元组、字符串等
在每次循环中,变量名会依次取序列中的每个元素,并执行代码块中的代码。
while 循环条件:
#代码块
for 变量1 in 序列1:
for 变量2 in 序列2:
# 执行的代码块
for 变量1 in 序列1:
while循环条件:
# 执行的代码块
while 循环条件:
# 执行的代码块
while循环条件:
# 执行的代码块
for 循环变量 in 可迭代对象:
#若循环变量在可迭代对象中,执行这段代码
else:
#若循环变量不在可迭代对象中,执行这段代码
while 循环条件:
#若条件为真执行这段代码
else:
#若条件为假执行这段代码
pass语句:pass的意思是空语句,pass语句不做任何事情,只是为了保持程序结构的完整性。