Furthe77oad
Furthe77oad
发布于 2026-09-10 / 0 阅读
0
0

Python控制流语句

写在最前

Python 的条件控制语句和循环语句,通常统称为:Python控制流语句,它们用于控制程序代码的执行顺序,也可以称为:

  • 控制结构(Control Structures)
  • 流程控制语句(Flow Control Statements)

条件语句

Python 条件语句是通过一条或多条语句的执行结果(True 或者 False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

image-20260910192248907

代码执行过程:

if (<expr>) :
  <statement>
  <statement>
  ... ...
  <statement>
 <following_statements>

条件判断关键字

关键字 / 函数 说明 示例
if 条件判断语句,当条件为 True 时执行代码块 if x > 0:
elif 多条件判断分支(else if) elif x == 0:
else 所有条件不满足时执行 else:
pass 空语句,占位用,保证语法完整 if x > 0: pass
match 结构化模式匹配(Python 3.10+,类似 switch) match x: case 1: ...

if 语句

Python中if语句的一般形式如下所示:

if condition_1:
    statement_block_1
elif condition_2:
    statement_block_2
else:
    statement_block_3
  • 如果 "condition_1" 为 True 将执行 "statement_block_1" 块语句
  • 如果 "condition_1" 为False,将判断 "condition_2"
  • 如果"condition_2" 为 True 将执行 "statement_block_2" 块语句
  • 如果 "condition_2" 为False,将执行"statement_block_3"块语句

Python 中用 elif 代替了 else if,所以if语句的关键字为:if – elif – else。

注意:

  • 1、每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
  • 2、使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
  • 3、在 Python 中没有 switch...case 语句,但在 Python3.10 版本添加了 match...case,功能也类似,详见下文。

GIF演示:

Furthe77oad-Python循环演示

实例:

image-20260910193351896

从结果可以看到由于变量 var2 为 0,所以对应的 if 内的语句没有执行。

if 常用操作运算符

以下为if中常用的操作运算符:

操作符 描述
< 小于
<= 小于或等于
> 大于
>= 大于或等于
== 等于,比较两个值是否相等
!= 不等于

实例:

image-20260910193913552

利用循环语句做的猜数游戏:

image-20260910194342197

if 嵌套

在嵌套 if 语句中,可以把 if...elif...else 结构放在另外一个 if...elif...else 结构中。

if 表达式1:
    语句
    if 表达式2:
        语句
    elif 表达式3:
        语句
    else:
        语句
elif 表达式4:
    语句
else:
    语句

实例:

123

运行结果:

image-20260910194930932

match ... case

Python 3.10 增加了 match...case 的条件判断,不需要再使用一连串的 if-else 来判断了。

Furthe77oad-match-case流程图

语法格式如下:

match subject:
    case <pattern_1>:
        <action_1>
    case <pattern_2>:
        <action_2>
    case <pattern_3>:
        <action_3>
    case _:
        <action_wildcard>

case _: 类似于 C 和 Java 中的 default:,当其他 case 都无法匹配时,匹配这条,保证永远会匹配成功。

image-20260910195415651

以上是一个输出 HTTP 状态码的实例,多个状态码的输出结果。

一个 case 也可以设置多个匹配条件,条件使用 | 隔开,语法如下:

case 401|403|404:
    return "Not allowed"

循环语句

Python 中的循环语句有 for 和 while,循环语句控制结构如下图:

Furthe77oad-条件循环流程图

循环控制关键字与方法

关键字 / 函数 说明 示例
for 迭代循环,用于遍历序列或可迭代对象 for i in list:
while 条件循环,条件为 True 时持续执行 while x > 0:
break 立即终止当前循环 break
continue 跳过本次循环剩余代码,进入下一次迭代 continue
else(循环) 循环正常结束(未被 break)时执行 for i in range(3): ... else: ...
pass 循环中的占位语句(空操作) for i in range(5): pass
range() 生成整数序列,常与 for 循环配合使用,左开右闭 range(0, 5)
enumerate() 遍历时同时获取索引和值 for i, v in enumerate(list):

while 循环

Python 中 while 语句的一般形式:

while 判断条件(condition):
    执行语句(statements)……

执行流程图如下:

Furthe77oad-while循环流程图

这是 GIF 演示:

Furthe77oad-while奇数循环演示

同样需要注意冒号和缩进。另外,在 Python 中没有 do..while 循环。

以下实例使用了 while 来计算 1 到 100 的总和:

image-20260910202547454

无限循环

我们们可以通过设置条件表达式永远不为 false 来实现无限循环,实例如下:

var = 1
while var == 1 :  # 表达式永远为 true
   num = int(input("输入一个数字  :"))
   print ("你输入的数字是: ", num)
 
print ("Good bye!")

你可以使用 CTRL+C 或者在 Mac 上使用 control + Z 来退出当前的无限循环。

无限循环在服务器上客户端的实时请求非常有用。

while 循环使用 else 语句

如果 while 后面的条件语句为 false 时,则执行 else 的语句块。

语法格式如下:

while <expr>:
    <statement(s)>
else:
    <additional_statement(s)>

expr 条件语句为 true 则执行 statement(s) 语句块,如果为 false,则执行 additional_statement(s)。

简单语句组

类似 if 语句的语法,如果你的 while 循环体中只有一条语句,你可以将该语句与 while 写在同一行中, 如下所示:

flag = 1
while (flag): print ("欢迎访问 Furthe77oad's blog!")

for 语句

Python for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。

for循环的一般格式如下:

for <variable> in <sequence>:
    <statements>
else:
    <statements>

流程图:

image-20260910203719563

Python for 循环实例:

image-20260910203237434

也可用于打印字符串里的每个字符:

image-20260910203328506

for ... else

在 Python 中,for...else 语句用于在循环结束后执行一段代码。

语法格式如下:

for item in iterable:
    # 循环主体
else:
    # 循环结束后执行的代码

当循环执行完毕(即遍历完 iterable 中的所有元素)后,会执行 else 子句中的代码,如果在循环过程中遇到了 break 语句,则会中断循环,此时不会执行 else 子句。

for x in range(6):
  print(x)
else:
  print("Finally finished!")

执行脚本后,输出结果为:

0
1
2
3
4
5
Finally finished!

以下 for 实例中使用了 break 语句,break 语句用于跳出当前循环体,不会执行 else 子句:

sites = ["Baidu", "Google","zzl","Taobao"]
for site in sites:
    if site == "zzl":
        print("烂肉!")
        break
    print("循环数据 " + site)
else:
    print("没有循环数据!")
print("完成循环!")

执行脚本后,在循环到 "zzl"时会跳出循环体:

循环数据 Baidu
循环数据 Google
菜鸟教程!
完成循环!

range() 函数

如果你需要遍历数字序列,可以使用内置 range() 函数。它会生成数列,例如:

>>>for i in range(5):
...     print(i)
...
0
1
2
3
4

也可以使用 range() 指定区间的值:

>>>for i in range(5,9):
...     print(i)
...

5
6
7
8

可以使 range() 以指定数字开始并指定不同的增量(甚至可以是负数,有时这也叫做'步长'):

>>>for i in range(0, 10, 3) :
...     print(i)
...

0
3
6
9

负数:

>>>for i in range(-10, -100, -30) :
...     print(i)
...
-10
-40
-70

可以结合 range() 和 len() 函数以遍历一个序列的索引,如下所示:

>>>a = ['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
>>>for i in range(len(a)):
...     print(i, a[i])
... 
0 Google
1 Baidu
2 Runoob
3 Taobao
4 QQ

还可以使用 range() 函数来创建一个列表:

>>>list(range(5))
[0, 1, 2, 3, 4]

break 和 continue 语句及循环中的 else 子句

break 执行流程:

image-20260910205205068

continue 执行流程:

image-20260910205214101

while 语句代码执行过程:

image-20260910205235580

for 语句代码执行过程:

image-20260910205955595

break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

实例:

while 中使用 break:

n = 5
while n > 0:
    n -= 1
    if n == 2:
        break
    print(n)
print('循环结束')

输出结果为:

4
3
循环结束

while 中使用 continue:

n = 5
while n > 0:
    n -= 1
    if n == 2:
        continue
    print(n)
print('循环结束')

输出结果为:

4
3
1
0
循环结束

pass 语句

Python pass是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句,如下实例:

>>>while True:
...     pass  # 等待键盘中断 (Ctrl+C)

最小的类:

>>>class MyEmptyClass:
...     pass

以下实例在字母为 o 时 执行 pass 语句块:

for letter in 'Suuuoo': 
   if letter == 'o':
      pass
      print ('执行 pass 块')
   print ('当前字母 :', letter)
 
print ("Good bye!")

评论