程序控制流由各种类型的条件语句、循环以及函数调用所调节。默认情况下,计算机程序中的指令是按照从上到下的顺序执行的,也就是从开始到结束。然而,这样的顺序执行程序只能完成简单的任务。我们希望程序具有决策能力,以便根据不同的条件执行不同的步骤。
包括 Python 在内的大多数编程语言都提供了控制指令执行流程的功能。通常,在任何编程语言中都有两种类型的控制流语句,Python 也支持它们。
决策语句
决策语句用于使 Python 程序能够根据某个布尔表达式的值决定执行哪一组替代指令。
下图说明了决策语句的工作方式:
if 语句
Python 提供了 if..elif..else 控制结构作为决策的一部分。它由三个不同的块组成:if 块、elif(else if 的缩写)块和 else 块。
示例
下面是一个简单的例子,展示了 if..elif..else 的用法。您可以尝试使用不同的分数运行这个程序并验证结果。
marks = 80
result = ""
if marks < 30:
result = "Failed"
elif marks > 75:
result = "Passed with distinction"
else:
result = "Passed"
print(result)
这将产生以下结果:
Passed with distinction
match 语句
Python 支持 match-case 语句,也可以作为决策的一部分。如果模式匹配表达式,那么该 case 下的代码将会被执行。
示例
下面是一个简单的例子,演示了 match 语句的用法。
def checkVowel(n):
match n:
case 'a': return "Vowel alphabet"
case 'e': return "Vowel alphabet"
case 'i': return "Vowel alphabet"
case 'o': return "Vowel alphabet"
case 'u': return "Vowel alphabet"
case _: return "Simple alphabet"
print(checkVowel('a'))
print(checkVowel('m'))
print(checkVowel('o'))
这将产生以下结果:
Vowel alphabet
Simple alphabet
Vowel alphabet
循环或迭代语句
大多数过程需要一组指令被反复执行。在编程术语中,这被称为循环。如果流程无条件地返回,则形成无限循环,这不是我们想要的,因为其余的代码将永远不会被执行。
在条件循环中,一组语句的重复迭代会一直持续到满足特定条件为止。Python 支持多种循环,如 for 循环、while 循环,我们将在后面的章节中学习。
for 循环
for 循环遍历任何序列中的项目,比如列表、元组或字符串。
示例
下面是一个简单的例子,展示了如何在 Python 中使用 for 循环遍历数组:
words = ["one", "two", "three"]
for x in words:
print(x)
这将产生以下结果:
one
two
three
while 循环
while 循环只要给定的布尔表达式为真就重复执行目标语句。
示例
下面是一个简单的例子,展示了如何在 Python 中使用 while 循环打印前五个数字:
i = 1
while i < 6:
print(i)
i += 1
这将产生以下结果:
1
2
3
4
5
跳转语句
跳转语句用于通过打破当前程序流来跳转到特定的语句。在 Python 中有两种跳转语句:break 和 continue。
break 语句
它终止当前循环并在下一个语句处恢复执行。
示例
下面的例子演示了 break 语句的用法:
x = 0
while x < 10:
print("x:", x)
if x == 5:
print("Breaking...")
break
x += 1
print("End")
这将产生以下结果:
x: 0
x: 1
x: 2
x: 3
x: 4
x: 5
Breaking...
End
continue 语句
它跳过当前程序块的执行并将控制权返回到当前循环的开始处以启动下一次迭代。
示例
下面的例子演示了 continue 语句的用法:
for letter in "Python":
if letter == "h":
continue
print("Current Letter :", letter)
这将产生以下结果:
Current Letter : P
Current Letter : y
Current Letter : t
Current Letter : o
Current Letter : n