Python 控制流
最后修改于 2024 年 1 月 29 日
在本文中,我们将介绍如何控制 Python 程序的流程。
控制流
当 Python 程序运行时,代码是从上到下执行的。程序流可以通过各种关键字来改变,包括 if/else
、for
、while
和 match
。
控制流结构可用于有条件地或多次执行代码。
if 语句
if
关键字用于检查一个表达式是否为真。如果为真,则执行一个语句。该语句可以是一个单独的语句,也可以是一个复合语句。复合语句包含由代码块括起来的多个语句。
#!/usr/bin/python import random r = random.randint(-5, 5) print(r) if r > 0: print('The r variable is positive')
生成一个随机数。如果该数字大于零,我们向终端打印一条消息。
r = random.randint(-5, 5)
我们生成一个介于 -5 .. 5 之间的随机整数。
if r > 0: print('The r variable is positive')
使用 if
关键字,我们检查生成的数字是否大于零。if 关键字后面是一个求值为布尔值的表达式。如果布尔值为 True,则执行代码块。在我们的例子中,字符串 *The r variable is positive* 被打印到终端。如果随机值为负数,则不执行任何操作。
else 语句
我们可以使用 else 关键字来创建简单的分支。如果 if 关键字后面的表达式求值为 False
,则会自动执行 else
关键字后面的代码块。
#!/usr/bin/python import random r = random.randint(-5, 5) print(r) if r > 0: print('The r variable is positive') else: print('The r variable is negative or zero')
要么执行 if 关键字后面的代码块,要么执行 else 关键字后面的代码块。
elif 语句
我们可以使用 elif
关键字创建多个分支。仅当前一个条件未满足时,它才会测试另一个条件。请注意,我们可以在测试中使用多个 elif
关键字。
#!/usr/bin/python import random r = random.randint(-5, 5) print(r) if r > 0: print('The r variable is positive') elif r == 0: print('The r variable is zero') else: print('The r variable is negative')
如果第一个条件求值为 True
,例如输入的值小于零,则执行第一个代码块,并跳过其余两个代码块。如果第一个条件不满足,则检查 elif
关键字后面的第二个条件。如果第二个条件求值为 True
,则执行第二个代码块。如果不满足,则执行 else 关键字后面的第三个代码块。如果前面的条件均未满足,则始终执行 else 代码块。
while 语句
while
关键字用于创建循环。while 循环中的语句将一直执行,直到表达式求值为 False
。
#!/usr/bin/python numbers = [22, 34, 12, 32, 4] mysum = 0 i = len(numbers) while i != 0: i -= 1 mysum = mysum + numbers[i] print("The sum is:", mysum)
我们想计算 numbers 列表中所有值的总和。我们使用 while 循环。我们确定列表的长度。while 循环一遍又一遍地执行,直到 i 等于零。在循环体中,我们递减计数器并计算值的总和。
$ ./main.py The sum is: 104
break 语句
break
关键字用于在需要时中断循环。
#!/usr/bin/python import random while True: val = random.randint(1, 30) print(val, end=" ") if val == 22: break print()
在我们的示例中,我们打印随机整数。如果数字等于 22,则使用 break 关键字中断循环。while True
创建一个无限循环。break
用于跳出这个无限循环。
$ ./main.py 20 9 27 28 1 12 3 3 13 15 29 27 8 13 17 29 8 1 22
continue 语句
continue
语句用于中断当前循环而不跳出整个循环。它启动一个新的循环。
#!/usr/bin/python num = 0 while num < 1000: num = num + 1 if num % 2 == 0: continue print(num, end=" ") print()
在示例中,我们打印所有小于 1000 且不能被 2 整除的数字。
for 语句
for/in
关键字用于按其在容器中出现的顺序迭代集合的项。
#!/usr/bin/python lyrics = """ Are you really here or am I dreaming I can't tell dreams from truth for it's been so long since I have seen you I can hardly remember your face anymore """ for i in lyrics: print(i, end=" ")
在示例中,我们有一个 lyrics 变量,其中包含一首歌的诗节。我们遍历文本,逐个字符打印文本。print 语句中的逗号阻止每个字符打印在新行上。
$ ./main.py A r e y o u r e a l l y h e r e o r a m I d r e a m i n g I c a n ' t t e l l d r e a m s f r o m t r u t h f o r i t ' s b e e n s o l o n g s i n c e I h a v e s e e n y o u I c a n h a r d l y r e m e m b e r y o u r f a c e a n y m o r e
for 语句具有丰富的语法,并在 Python for 循环 中得到了更详细的介绍。
模式匹配
模式匹配是一种强大的控制流结构,它允许我们将一个值与一系列模式进行比较,并根据匹配的模式执行代码。它比 if/else
语句更高级。
模式匹配具有复杂的语法,并在 Python 模式匹配 中进行了介绍。
#!/usr/bin/python grades = ['A', 'B', 'C', 'D', 'E', 'F', 'FX'] for grade in grades: match grade: case 'A' | 'B' | 'C' | 'D' | 'E' | 'F': print('passed') case 'FX': print('failed')
我们有一个成绩列表。对于 A 到 F 的成绩,我们通过了示例。对于 FX 成绩,我们考试不及格。
grades = ['A', 'B', 'C', 'D', 'E', 'F', 'FX']
我们定义了一个成绩列表。
for grade in grades:
首先,我们使用 for
循环遍历列表。
match grade: case 'A' | 'B' | 'C' | 'D' | 'E' | 'F': print('passed') case 'FX': print('failed')
在每个 for 循环中,我们将一个值与给定的模式进行匹配。第一个 case 分支与用 |
分隔的多个值进行匹配。在第二个分支中,我们匹配单个值 'FX'
。
$ ./main.py passed passed passed passed passed passed failed
来源
在本文中,我们研究了 Python 中的程序控制流。
作者
列出所有 Python 教程。