当前位置: 首页 > news >正文

[Python编程] Python3 控制流程

对于刚接触 Python 的初学者来说,控制流程是编写逻辑清晰代码的基础,它决定了程序代码的执行顺序。Python3 的控制流程主要包含条件语句、循环语句、推导式和迭代器这几大核心内容。

一、条件语句:让程序 “做判断”

条件语句的作用是根据不同的条件执行不同的代码块,就像我们日常生活中根据天气情况决定是否带伞一样。Python3 中的条件语句主要有 if 语句、if-elif-else 语句、if 嵌套以及 Python 3.10 新增的 match...case 语句。

1️⃣if 语句

if 语句是最基础的条件判断语句,它的逻辑是:如果满足某个条件,就执行对应的代码块;如果不满足,则跳过该代码块。

  • 语法格式

python

if condition:statement_block  # 当condition为True时执行的代码

其中,condition是一个表达式,其结果为布尔值(True 或 False);statement_block是当条件成立时要执行的代码,需要注意的是,这里的代码块必须缩进(通常是 4 个空格),这是 Python 语法的规定。

  • 实例演示

python

运行

var1 = 100
if var1 == 100:  # 条件:var1是否等于100,结果为Trueprint("if表达式条件为True")print(var1)  # 执行该语句,输出100var2 = 0
if var2 != 0:  # 条件:var2是否不等于0,结果为Falseprint("if表达式条件为True")  # 该语句不执行
print(var2)  # 无论if条件是否成立,该语句都会执行,输出0
print("Good bye!")  # 输出"Good bye!"

运行结果:

plaintext

if表达式条件为True
100
0
Good bye!

2️⃣if-elif-else 语句

当需要判断多个条件时,就可以使用 if-elif-else 语句。它会依次判断每个条件,只要有一个条件成立,就执行对应的代码块,之后不再判断后续条件;如果所有条件都不成立,则执行 else 后的代码块。

  • 语法格式

python

if condition_1:statement_block_1  # 条件1成立时执行
elif condition_2:statement_block_2  # 条件1不成立,条件2成立时执行
...
else:statement_block_n  # 所有条件都不成立时执行
  • 实例演示

假设我们要根据学生的考试成绩划分等级(90 分及以上为优秀,80-89 分为良好,60-79 分为及格,60 分以下为不及格):

python

score = 85
if score >= 90:print("成绩等级:优秀")
elif score >= 80:print("成绩等级:良好")
elif score >= 60:print("成绩等级:及格")
else:print("成绩等级:不及格")

运行结果:

plaintext

成绩等级:良好

3️⃣if 嵌套

if 嵌套指的是在一个 if 语句的代码块中又包含另一个或多个 if 语句,用于处理更复杂的条件判断场景。

  • 语法格式

python

if outer_condition:statement_block_outerif inner_condition:statement_block_inner  # 外层条件成立,且内层条件也成立时执行...
  • 实例演示

判断一个数字是否能被 2 整除,在能被 2 整除的前提下,再判断是否能被 3 整除:

python

num = int(input("输入一个数字:"))
if num % 2 == 0:if num % 3 == 0:print("你输入的数字可以整除2和3")else:print("你输入的数字可以整除2但不能整除3")
else:if num % 3 == 0:print("你输入的数字可以整除3但不能整除2")else:print("你输入的数字不能整除2和3")

当输入 15 时,运行结果:

plaintext

你输入的数字可以整除3但不能整除2

4️⃣match...case 语句(Python 3.10+)

match...case 语句类似于其他编程语言中的 switch 语句,被称为 “模式匹配” 或 “结构化匹配”。它会将 match 后的对象依次与 case 后的内容进行匹配,匹配成功则执行对应的代码块,若所有 case 都不匹配,则执行 case 后的代码块( 可以匹配一切)。

  • 语法格式

python

match subject:case <pattern_1>:<action_1>  # 匹配pattern_1时执行case <pattern_2>:<action_2>  # 匹配pattern_2时执行...case _:<action_wildcard>  # 所有pattern都不匹配时执行

  • 基本模式匹配:匹配具体的值

python

x = 10
match x:case 10:print("x is 10")case 20:print("x is 20")case _:print("x is something else")

运行结果:

plaintext

x is 10
  • 序列模式匹配:匹配元组、列表等序列的结构

python

point = (2, 3)
match point:case (0, 0):print("origin")  # 匹配(0,0)时执行case (0, y):print(f"point is on the Y axis at (0, {y})")  # 第一个元素为0时执行case (x, 0):print(f"point is on the X axis at ({x}, 0)")  # 第二个元素为0时执行case (x, y):print(f"point is at ({x}, {y})")  # 匹配任意两个元素的元组case _:print("Not a point")

运行结果:

plaintext

point is at (2, 3)
  • OR 模式:使用 | 表示一个或多个模式,只要匹配其中一个即可

python

x = 2
match x:case 1 | 2 | 3:print("x is 1, 2, or 3")case _:print("x is something else")

运行结果:

plaintext

x is 1, 2, or 3
  • 守卫:在模式匹配中使用 if 添加额外的条件,只有同时满足模式和条件才会执行

python

x = 10
match x:case x if x > 5:print("x is greater than 5")case _:print("x is 5 or less")

运行结果:

plaintext

x is greater than 5

5️⃣if 中常用的操作运算符

在条件判断中,经常会用到各种比较运算符来构建条件,以下是常用的操作运算符:

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

二、循环语句:让程序 “重复做”

循环语句用于让程序重复执行某一段代码块,直到满足特定条件才停止。Python3 中的循环语句主要有 while 循环和 for 循环。

1️⃣while 循环

while 循环根据条件判断是否重复执行代码块,只要条件为 True,就会一直执行循环体;当条件变为 False 时,循环结束。

  • 语法格式

python

while condition:statements  # 条件为True时重复执行的代码块
  • 实例演示:计算 1 到 100 的和

python

n = 100
sum = 0
counter = 1
while counter <= n:  # 条件:counter是否小于等于100sum = sum + counter  # 累加求和counter += 1  # counter自增1,避免无限循环
print("1到%d之和为:%d" % (n, sum))

运行结果:

plaintext

1到100之和为:5050

while 循环使用 else 语句当 while 后面的条件语句为 False 时,会执行 else 后的代码块。

  • 语法格式

python

while <expr>:<statement(s)>  # 条件为True时执行
else:<additional_statement(s)>  # 条件为False时执行
  • 实例演示

python

count = 0
while count < 5:print(count, "小于5")count = count + 1
else:print(count, "大于或等于5")

运行结果:

plaintext

0 小于5
1 小于5
2 小于5
3 小于5
4 小于5
5 大于或等于5

2️⃣for 循环

for 循环可以遍历任何可迭代对象(如列表、字符串、元组、range 对象等),它会依次取出可迭代对象中的每个元素,并执行对应的代码块。

  • 语法格式

python

for <variable> in <sequence>:<statements>  # 遍历每个元素时执行的代码
else:<statements>  # 循环正常结束(未被break中断)时执行

  • 遍历列表

python

sites = ["x", "y", "k", "j"]
for site in sites:print(site)
print("-" * 20)

运行结果:

plaintext

x
y
k
j
--------------------
  • 遍历字符串中的每一个字符

python

word = 'xykj'
for letter in word:print(letter)
print("-" * 20)

运行结果:

plaintext

x
y
k
j
--------------------
  • 遍历数字(使用 range () 函数)range () 函数用于生成一个整数序列,语法为 range (start, stop, step),其中 start 为起始值(默认 0),stop 为结束值(不包含该值),step 为步长(默认 1)。

python

print("-" * 20)
for num in range(5):  # 生成0-4的整数序列print(num)

运行结果:

plaintext

--------------------
0
1
2
3
4

for...else 语句

for...else 语句中,当循环正常执行完毕(即遍历完可迭代对象中的所有元素,未被 break 中断)后,会执行 else 子句中的代码;如果在循环过程中遇到 break 语句中断循环,则不会执行 else 子句。

  • 实例 1:循环正常结束

python

运行

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

运行结果:

plaintext

0
1
2
3
4
5
finished!
  • 实例 2:循环被 break 中断

python

运行

for x in range(6):if x == 3:break  # 当x等于3时,中断循环print(x)
else:print("finished!")  # 该语句不执行

运行结果:

plaintext

0
1
2

3️⃣break 和 continue 语句

break 和 continue 语句用于控制循环的执行流程,它们通常与 if 语句配合使用。

  • break 语句

break 语句可以跳出 for 和 while 的循环体,一旦执行 break 语句,循环会立即终止,并且任何对应的循环 else 块都不会执行。

  • 实例演示

python

n = 5
while n > 0:n -= 1if n == 2:  # 当n等于2时,跳出循环breakprint(n)
print('循环结束。')

运行结果:

plaintext

4
3
循环结束。
  • continue 语句

continue 语句用于跳过当前循环块中的剩余语句,然后直接开始下一轮循环,并不会终止整个循环。

  • 实例演示

python

n = 5
while n > 0:n -= 1if n == 2:  # 当n等于2时,跳过当前循环的剩余语句continueprint(n)
print("循环结束。")

运行结果:

plaintext

4
3
1
0
循环结束。

三、推导式:简洁高效的数据处理方式

Python 推导式是一种强大且简洁的语法,它可以从一个数据序列快速构建另一个新的数据序列,适用于生成列表、字典、集合和生成器(元组推导式返回生成器对象)。使用推导式可以让代码更简洁,但要注意保持可读性,避免表达式过于复杂。

1️⃣列表(list)推导式

列表推导式用于快速生成一个新的列表,它的语法简洁,执行效率较高。

  • 语法格式

python

[expression for item in iterable if condition]
  • expression:生成列表元素的表达式,可以是变量、函数调用等。
  • item:可迭代对象中的每个元素。
  • iterable:可迭代对象,如列表、元组、字符串、range 对象等。
  • condition(可选):筛选条件,只有满足条件的元素才会被用于生成新列表。

  • 实例演示

    计算 30 以内可以被 3 整除的整数

python

multiples = [i for i in range(30) if i % 3 == 0]
print(multiples)

运行结果:

plaintext

[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
  • 过滤掉长度小于或等于 3 的字符串列表,并将剩下的转换成大写字母

python

names = ['Bob', 'Tom', 'alice', 'jerry', 'Wendy', 'Smith']
new_names = [name.upper() for name in names if len(name) > 3]
print(new_names)

运行结果:

plaintext

['ALICE', 'JERRY', 'WENDY', 'SMITH']

2️⃣字典(dict)推导式

 字典推导式用于快速生成一个新的字典,它会根据指定的规则生成字典的键和值。

  • 语法格式

     python

{key_expr: value_expr for value in collection}
# 或包含筛选条件
{key_expr: value_expr for value in collection if condition}
  • key_expr:生成字典键的表达式。
  • value_expr:生成字典值的表达式。
  • collection:可迭代对象,用于提供生成键值对的数据。
  • condition(可选):筛选条件,满足条件的元素才会用于生成字典。

  • 实例演示:提供三个数字,以三个数字为键,三个数字的平方为值来创建字典

    python

dic = {x: x ** 2 for x in (2, 4, 6)}
print(dic)

运行结果:

plaintext

{2: 4, 4: 16, 6: 36}

3️⃣集合(set)推导式

集合推导式用于快速生成一个新的集合,集合具有元素唯一、无序的特点,所以集合推导式会自动去除重复元素。

  • 语法格式

python

运行

{expression for item in Sequence}
# 或包含筛选条件
{expression for item in Sequence if condition}
  • expression:生成集合元素的表达式。
  • item:可迭代对象(Sequence)中的每个元素。
  • Sequence:可迭代对象,如列表、元组、字符串等。
  • condition(可选):筛选条件,满足条件的元素才会用于生成集合。

  • 实例演示

    计算数字 1,2,3 的平方数

python

set_new = {i ** 2 for i in (1, 2, 3)}
print(set_new)

运行结果:

plaintext

{1, 4, 9}


4️⃣元组(tuple)推导式

元组推导式的语法与列表推导式类似,但它返回的结果是一个生成器对象,而不是直接生成元组。如果需要将其转换为元组,可以使用 tuple () 函数。

  • 语法格式

python

(expression for item in Sequence)
# 或包含筛选条件
(expression for item in Sequence if condition)
  • 各参数含义与列表推导式相同。

  • 实例演示:生成一个包含数字 1~9 的元组

python

a = (x for x in range(1, 10))
print(a)  # 输出生成器对象
print(tuple(a))  # 使用tuple()函数将生成器对象转换为元组

运行结果:

plaintext

<generator object <genexpr> at 0x000001E20E465F00>
(1, 2, 3, 4, 5, 6, 7, 8, 9)

5️⃣推导式使用注意事项

  1. 推导式可以嵌套,但嵌套层数过多会使代码难以理解和维护,建议尽量减少嵌套层数。
  2. 推导式可以包含多个 for 子句和 if 条件,但要保持简洁明了,优先考虑代码的可读性。
  3. 处理大数据集时,要注意推导式的内存消耗。虽然推导式通常比传统循环执行速度快,但它会一次性生成所有数据并存储在内存中,对于超大数据集可能会导致内存不足,此时可以考虑使用生成器(如元组推导式返回的生成器对象),生成器会按需生成数据,减少内存消耗。

四、迭代器:便捷访问集合元素

迭代是 Python 中访问集合元素的一种重要方式,而迭代器则是实现迭代的工具。迭代器是一个可以记住遍历位置的对象,它从集合的第一个元素开始访问,直到所有元素被访问完结束,并且只能往前遍历,不能后退。

1️⃣迭代器的基本方法

迭代器有两个核心方法:

  1. iter():用于创建迭代器对象,将可迭代对象(如列表、字符串、元组等)转换为迭代器。
  2. next():用于获取迭代器的下一个元素,每次调用 next () 方法,迭代器会移动到下一个位置;当迭代器中没有更多元素时,调用 next () 方法会抛出 StopIteration 异常。

2️⃣创建和使用迭代器

  • 使用 iter () 创建迭代器并通过 next () 访问元素

python

list1 = [1, 2, 3, 4]
it = iter(list1)  # 创建迭代器对象
print(next(it))  # 输出迭代器的下一个元素,结果为1
print(next(it))  # 输出迭代器的下一个元素,结果为2
# 继续调用next(),直到遍历完所有元素
print(next(it))  # 3
print(next(it))  # 4
# print(next(it))  # 此时已无元素,会抛出StopIteration异常

运行结果:

plaintext

1
2
3
4
  • 使用 for 语句遍历迭代器

    除了使用 next () 方法,我们还可以使用 for 语句直接遍历迭代器,for 语句会自动处理 StopIteration 异常,当迭代器中没有元素时,循环会自动结束。

python

运行

list1 = [1, 2, 3, 4]
it = iter(list1)  # 创建迭代器对象
for x in it:print(x, end="")  # 输出迭代器中的元素,end=""表示不换行

运行结果:

plaintext

1234


3️⃣可迭代对象与迭代器的关系

可迭代对象(Iterable)是指可以被转换为迭代器的对象,如列表、字符串、元组、字典、集合、range 对象等。判断一个对象是否为可迭代对象,可以使用 isinstance () 函数并结合 collections.abc.Iterable 类;判断一个对象是否为迭代器,可以结合 collections.abc.Iterator 类。

python

from collections.abc import Iterable, Iteratorlist1 = [1, 2, 3]
print(isinstance(list1, Iterable))  # True,列表是可迭代对象
print(isinstance(list1, Iterator))  # False,列表不是迭代器it = iter(list1)
print(isinstance(it, Iterable))  # True,迭代器是可迭代对象
print(isinstance(it, Iterator))  # True,迭代器是Iterator类型

五、总结

Python3 的控制流程是编写 Python 程序的基础,本文详细介绍了条件语句、循环语句、推导式和迭代器这四大核心内容:

  1. 条件语句:包括 if、if-elif-else、if 嵌套和 match...case,用于根据不同条件执行不同代码块,match...case 为 Python 3.10 新增特性,功能强大。
  2. 循环语句:while 循环根据条件重复执行代码,for 循环遍历可迭代对象;break 用于终止循环,continue 用于跳过当前循环剩余语句;循环还可搭配 else 使用。
  3. 推导式:包括列表、字典、集合和元组推导式,能简洁高效地生成新数据序列,使用时需注意可读性和内存消耗。
  4. 迭代器:通过 iter () 创建,next () 获取下一个元素,可使用 for 语句遍历,是便捷访问集合元素的工具。
http://www.dtcms.com/a/399126.html

相关文章:

  • 西安网站设计哪家公司好山东网站建设价格实惠
  • JavaScript 的作用域
  • TDengine 统计函数 APERCENTILE 用户手册
  • 【分布式】分布式ID生成方案、接口幂等、一致性哈希
  • 分布式 ID 生成方案实战指南:从选型到落地的全场景避坑手册(一)
  • 对比网站做企业网站需要用到的软件
  • HAProxy 与 Tomcat
  • Tomcat 配置与使用指南
  • 金融数据库--下载全市场可转债日线行情数据
  • 新能源知识库(105)什么是 日本JEMS平台
  • 怎么学做电商然后自己创业seo优化关键词排名
  • 360免费建站怎么进不去网站开发合同模板免费
  • 51单片机实践之数码管电子时钟/时间显示及其设置
  • 条款9:优先选用别名声明,而非typedef
  • Matlab调用GPT-5 API示例
  • 猪八戒网站做软件让你有做黑客感觉的网站
  • 毕业设计指导网站建设揭阳网站推广教程
  • 安全多方计算 联邦学习 同态加密
  • 宁波新亚建设内部网站wordpress开发文档下载
  • GWO-Transformer灰狼算法优化编码器多特征分类预测/故障诊断,Matlab实现,代码解析+运行效果一览
  • 2025 化工 PLM 市场图鉴:软件厂商技术布局与行业应用,助力企业数字化转型
  • 竞品网站分析微信网站需要备案吗
  • 大模型-LLM-large language model
  • 探索生成式纠错在构音障碍语音识别中的应用
  • SCARA 机器人轨迹运动奇异点规避方法
  • 【Linux】自动化构建--make/Makefile
  • 建设银行手机网站wordpress电台
  • 同一种激光模式 高阶模式的产生会降低基模的功率吗 能降低多少?
  • 设计模式-责任链模式详解
  • CentOS7安装mysql最简单教程