第三阶段:精通流程控制,让程序“有逻辑地执行”
😄生命不息,写作不止
🔥 继续踏上学习之路,学之分享笔记
👊 总有一天我也能像各位大佬一样
🏆 博客首页 @怒放吧德德 To记录领地 @一个有梦有戏的人
🌝分享学习心得,欢迎指正,大家一起学习成长!
🔥豆包AI
转发请携带作者信息 @怒放吧德德(掘金) @一个有梦有戏的人(CSDN)
前言
恭喜大家顺利完成Python3基础学习的第二阶段!在第二阶段,我们吃透了变量、数据类型、运算符等核心基础语法,相当于掌握了编程的“积木”。而第三阶段的「流程控制」,就是搭建这些积木的“规则”——它能让程序摆脱“从上到下顺序执行”的死板模式,根据不同条件做出判断、重复执行指定操作,真正实现“智能化”逻辑。
本次第三阶段,我们重点攻克四大核心内容:条件语句(if/elif/else)、循环语句(for循环、while循环)、循环控制(break/continue/pass)、分支与循环嵌套。每一个知识点都搭配可直接复制运行的代码示例,还有新手常见坑提示,跟着敲代码、练逻辑,就能轻松掌握,开启Python编程的“逻辑进阶”之路~
1 条件语句:if/elif/else,让程序“学会判断”
生活中我们经常会做判断:如果下雨,就带伞;如果没下雨,就不带伞;如果下雨且刮大风,就带雨衣。Python中的条件语句,就是模拟这种“判断逻辑”,让程序根据不同的条件,执行不同的代码块。核心关键词:if(如果)、elif(否则如果)、else(否则),三者结合可覆盖所有判断场景。
1.1 基础用法:if 单条件判断
最简单的判断逻辑:只要满足一个条件,就执行对应的代码;不满足则跳过。语法格式:if 条件表达式: 代码块(注意冒号和缩进,缩进是Python区分代码块的核心,推荐4个空格)。
# 示例1:判断年龄是否成年(单条件)
age = 19
if age >= 18: # 条件表达式:判断age是否大于等于18,结果为True/False
print("你已经成年啦!") # 条件满足(True),执行该代码块
print("可以独立办理银行卡~") # 同一缩进,属于同一个代码块
# 示例2:条件不满足时,跳过代码块
age = 16
if age >= 18:
print("你已经成年啦!") # 条件不满足(False),该代码块不执行
print("程序执行结束") # 不在if缩进内,无论条件是否满足,都会执行
新手避坑:不要忘记if后面的冒号(:),也不要混淆缩进(同一代码块必须缩进一致),否则会报语法错误;另外,条件判断要用==(等于),不要用=(赋值),这是新手最常踩的坑之一。
1.2 进阶用法:if-else 双条件判断
适用于“非此即彼”的场景:满足条件执行if代码块,不满足则执行else代码块(else无需写条件)。语法格式:if 条件: 代码块1 else: 代码块2。
# 示例:判断成绩是否及格(双条件)
score = 75
if score >= 60:
print("成绩及格,继续加油!") # 条件满足,执行此处
else:
print("成绩不及格,需要补考哦~") # 条件不满足,执行此处
# 简化写法:三元表达式(适合简单的if-else判断,一行搞定)
score = 58
result = "及格" if score >= 60 else "不及格"
print(f"你的成绩等级:{result}") # 输出:你的成绩等级:不及格
三元表达式是if-else的简化形式,适合简单的赋值判断,复杂逻辑还是用常规if-else更易读。
1.3 高阶用法:if-elif-else 多条件判断
适用于多个条件并列的场景:依次判断每个条件,满足其中一个就执行对应的代码块,后续条件不再判断;所有条件都不满足,执行else代码块。语法格式:if 条件1: 代码块1 elif 条件2: 代码块2 ... else: 代码块n。
# 示例:判断成绩等级(多条件,覆盖优秀、良好、中等、及格、不及格)
score = 88
if score >= 90:
print("成绩优秀,太棒啦!")
elif score >= 80: # 仅当score < 90时,才会判断该条件
print("成绩良好,继续努力!")
elif score >= 70: # 仅当score < 80时,才会判断该条件
print("成绩中等,仍有提升空间~")
elif score >= 60: # 仅当score < 70时,才会判断该条件
print("成绩及格,稳住!")
else: # 所有条件都不满足(score < 60),执行此处
print("成绩不及格,需要补考哦~")
# 实际应用:判断输入的数字正负性
num = float(input("请输入一个数字:"))
if num > 0:
print(f"{num} 是正数")
elif num == 0:
print(f"{num} 既不是正数,也不是负数")
else:
print(f"{num} 是负数")
关键提示:elif必须跟在if后面,不能单独使用;多个elif的条件是“互斥”的,执行完一个elif的代码块后,会直接跳过后续所有elif和else;条件顺序很重要,不要把范围大的条件写在前面(比如先写score >=60,再写score >=90,会导致90分也被判断为及格)。
python 没有像 Java 的 switch-case ,但可以通过字典模拟。
2 循环语句:for循环 + while循环,解决“重复工作”
生活中很多重复的工作:比如每天早上起床、洗漱、吃早餐;比如打印1-100的所有数字。如果用代码逐行写这些重复操作,会非常繁琐。而循环语句,就是让程序“自动重复执行”指定代码块,高效解决重复工作。Python中核心的两种循环:for循环(遍历循环)、while循环(条件循环),各有适用场景,我们分别掌握。
2.1 for循环:遍历可迭代对象(最常用)
for循环的核心是“遍历”——依次访问可迭代对象(字符串、列表、range()函数等)中的每一个元素,遍历完所有元素后,循环自动结束。语法格式:for 变量名 in 可迭代对象: 代码块。
重点掌握:range()函数,用于生成指定范围的整数序列,语法:range(起始值, 结束值, 步长)(起始值默认0,步长默认1,结束值不包含自身)。
# 示例1:遍历字符串(依次输出每个字符)
str1 = "Python"
for char in str1:
print(char) # 依次输出:P y t h o n
# 示例2:遍历列表(依次输出每个元素)
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
for fruit in fruits:
print(f"我喜欢吃:{fruit}")
# 示例3:使用range()函数(生成整数序列,遍历输出1-10)
for i in range(1, 11): # range(1,11) → 1-10(不包含11)
print(i, end=" ") # 输出:1 2 3 4 5 6 7 8 9 10
# 示例4:range()函数指定步长(输出1-10中的奇数)
for i in range(1, 11, 2): # 步长为2,每次递增2
print(i, end=" ") # 输出:1 3 5 7 9
# 示例5:实际应用:计算1-100的总和
total = 0
for i in range(1, 101):
total += i # 等价于 total = total + i
print(f"\n1-100的总和是:{total}") # 输出:5050
适用场景:已知循环次数(比如遍历固定长度的列表、生成固定范围的数字),优先用for循环,简洁高效。
2.2 while循环:条件满足就循环(未知循环次数)
while循环的核心是“条件判断”——只要条件表达式的结果为True,就一直执行代码块;当条件表达式为False时,循环结束。语法格式:while 条件表达式: 代码块。
新手必记:while循环必须在代码块中“修改循环条件”(比如变量递增、递减),否则会导致“无限循环”(程序一直执行,无法终止,需手动停止)。
# 示例1:基础用法:打印1-5(已知次数,用while模拟)
count = 1 # 初始化循环变量
while count <= 5: # 循环条件:count小于等于5
print(count)
count += 1 # 修改循环条件(count递增1),避免无限循环
# 输出:1 2 3 4 5
# 示例2:未知循环次数:让用户输入数字,直到输入0停止
num = 1 # 初始化变量(避免条件判断报错)
while num != 0:
num = int(input("请输入一个数字(输入0停止):"))
print(f"你输入的数字是:{num}")
# 执行效果:用户输入1→输出1,输入2→输出2,输入0→输出0,循环结束
# 示例3:实际应用:计算1-100的偶数和
even_total = 0
i = 2
while i <= 100:
even_total += i
i += 2 # 步长为2,只取偶数
print(f"1-100的偶数和是:{even_total}") # 输出:2550
# 示例4:无限循环(谨慎使用,需手动终止)
# while True:
# print("这是无限循环,按Ctrl+C停止")
适用场景:未知循环次数(比如用户输入不确定、等待某个条件触发),用while循环;已知次数,优先用for循环。
2.3 for循环 vs while循环(新手区分)
- for循环:遍历可迭代对象,循环次数由可迭代对象的长度决定,无需手动控制循环条件,不易出错;
- while循环:循环次数由条件表达式决定,需手动修改循环条件,容易出现无限循环,适合未知循环次数的场景;
- 总结:能用人for循环的场景,尽量不用while循环(更简洁、更安全)。
3 循环控制:break/continue/pass,灵活控制循环流程
有时候,我们不需要循环完整执行所有次数——比如遍历列表时,找到目标元素就停止循环;或者跳过某个元素,继续执行下一次循环。这时候,就需要用到循环控制语句:break、continue、pass,它们能帮我们灵活控制循环的执行流程,让循环更“智能”。
3.1 break:终止整个循环(彻底退出)
作用:当程序执行到break时,会立即终止当前所在的循环(无论循环是否还有剩余次数、条件是否满足),跳出循环,执行循环后面的代码。
# 示例1:for循环中用break(找到目标元素停止遍历)
fruits = ["苹果", "香蕉", "橙子", "葡萄"]
target = "橙子"
for fruit in fruits:
if fruit == target:
print(f"找到目标水果:{fruit}")
break # 找到目标,终止整个循环
print(f"当前遍历:{fruit}") # 找到目标后,该代码不再执行
# 输出:当前遍历:苹果 → 当前遍历:香蕉 → 找到目标水果:橙子
# 示例2:while循环中用break(输入正确密码停止循环)
password = "123456"
while True:
input_pwd = input("请输入密码:")
if input_pwd == password:
print("密码正确,登录成功!")
break # 密码正确,终止无限循环
else:
print("密码错误,请重新输入~")
# 示例3:实际应用:搜索必需文件,找到所有目标后停止
files = ('data1.txt', 'config.ini', 'data2.txt', 'temp.log', 'data3.txt')
required_files = ('config.ini', 'data2.txt')
found_count = 0
for file in files:
if file in required_files:
print(f"找到必需文件: {file}")
found_count += 1
if found_count == len(required_files):
print("所有必需文件已找到,停止搜索")
break # 找到所有目标,终止循环
else:
print("警告:未找到所有必需文件")
3.2 continue:跳过本次循环,执行下一次
作用:当程序执行到continue时,会跳过当前循环的剩余代码,直接进入下一次循环(不会终止整个循环,只是跳过本次)。
# 示例1:for循环中用continue(跳过偶数,只打印奇数)
for i in range(1, 11):
if i % 2 == 0: # 判断是否为偶数
continue # 跳过本次循环,不执行下面的print语句
print(i, end=" ") # 输出:1 3 5 7 9
# 示例2:while循环中用continue(跳过负数,只处理非负数)
num = 0
while num < 10:
num += 1
if num < 5: # 跳过1-4
continue
print(num, end=" ") # 输出:5 6 7 8 9 10
# 示例3:数据清洗:跳过无效数据,处理有效数据
raw_data = (23, -1, 45, 0, 12, -5, 78, None, 34)
processed_data = []
for num in raw_data:
# 跳过无效数据
if num is None:
print("发现空值,跳过")
continue
if num < 0:
print(f"发现负值 {num},进行绝对值处理")
num = abs(num)
if num == 0:
print("发现零值,跳过处理")
continue
# 数据转换(计算平方根)
result = num ** 0.5
processed_data.append(round(result, 2))
print("处理后的数据:", processed_data) # 输出:[4.8, 6.71, 3.46, 8.83, 5.83]
3.3 pass:空操作(占位符)
作用:pass是一个“空语句”,执行到pass时,不会做任何操作,只是起到“占位”的作用。常用于:暂时不想写代码块、语法上需要语句但程序不需要执行任何操作的场景(比如定义函数、类时,先占位,后续补充)。
# 示例1:for循环中用pass(暂时不写逻辑,占位)
for i in range(5):
pass # 占位,不执行任何操作,循环正常结束
print("循环执行完毕") # 正常输出
# 示例2:if条件中用pass(后续补充逻辑)
age = 20
if age >= 18:
pass # 暂时不写成年后的逻辑,先占位
else:
print("未成年,禁止进入")
# 示例3:框架开发中的pass应用(子类可重写方法)
class DataProcessor:
def __init__(self, data):
self.data = data
def _advanced_visualization(self):
pass # 临时占位,后续补充高级可视化逻辑
3.4 break/continue/pass 区别总结(必记)
- break:终止整个循环,彻底退出;
- continue:跳过本次循环,进入下一次,不终止整个循环;
- pass:不做任何操作,仅占位,不影响循环执行。
4 分支与循环嵌套:复杂逻辑的“组合拳”
实际编程中,单一的条件语句、单一的循环语句,往往无法满足复杂的逻辑需求。这时候,就需要用到“嵌套”——将条件语句嵌套在循环中,或将循环嵌套在条件语句中,或将循环嵌套在循环中,实现更复杂的逻辑。核心:缩进决定代码块的归属,嵌套时注意缩进一致。
4.1 分支嵌套(if/elif/else 嵌套)
在一个条件语句的代码块中,再嵌套另一个条件语句,用于“多层判断”。
# 示例:判断成绩是否合格,合格后再判断是否优秀
score = 92
if score >= 60:
print("成绩及格")
# 嵌套内层条件判断
if score >= 90:
print("而且是优秀成绩,太厉害啦!")
elif score >= 80:
print("而且是良好成绩,继续加油~")
else:
print("继续努力,争取更好成绩!")
else:
print("成绩不及格,需要补考哦~")
# 输出:成绩及格 → 而且是优秀成绩,太厉害啦!
# 实际应用:判断用户登录(用户名和密码双重验证)
username = "admin"
password = "123456"
input_user = input("请输入用户名:")
input_pwd = input("请输入密码:")
if input_user == username:
print("用户名正确")
if input_pwd == password:
print("密码正确,登录成功!")
else:
print("密码错误,请重新输入~")
else:
print("用户名错误,不存在!")
2. 循环嵌套(for循环嵌套)
在一个for循环的代码块中,再嵌套另一个for循环,常用于“多维遍历”(比如打印九九乘法表、遍历二维列表)。
# 示例1:打印九九乘法表(经典for嵌套案例)
for i in range(1, 10): # 外层循环:控制行数(1-9行)
for j in range(1, i+1): # 内层循环:控制每行的列数(1-i列)
print(f"{j}×{i}={i*j}", end="\t") # \t 用于对齐
print() # 每行结束后换行,进入下一行循环
# 示例2:遍历二维列表(列表中包含列表)
students = [
["张三", 18, 90],
["李四", 19, 85],
["王五", 17, 78]
]
# 外层循环遍历每个学生信息,内层循环遍历每个学生的具体属性
for student in students:
for info in student:
print(info, end=" ")
print() # 每个学生信息换行
# 输出:
# 张三 18 90
# 李四 19 85
# 王五 17 78
4.3 循环嵌套(while循环嵌套)
在一个while循环的代码块中,再嵌套另一个while循环,常用于“多层条件循环”(注意控制两个循环的条件,避免无限循环)。
# 示例:打印3行4列的星号(*)
row = 1 # 外层循环:控制行数(1-3行)
while row <= 3:
col = 1 # 内层循环:控制每行的列数(1-4列)
while col <= 4:
print("*", end=" ")
col += 1 # 内层循环条件修改
print() # 每行结束换行
row += 1 # 外层循环条件修改
# 输出:
# * * * *
# * * * *
# * * * *
# 示例2:双重倒计时(外层倒计时3,内层倒计时5)
outer = 3
while outer > 0:
print(f"外层倒计时:{outer}")
inner = 5
while inner > 0:
print(f" 内层倒计时:{inner}")
inner -= 1
outer -= 1
print("-" * 10)
4.4 分支与循环混合嵌套(最常用)
将条件语句嵌套在循环中,或循环嵌套在条件语句中,实现更复杂的逻辑(实际编程中最常用的嵌套方式)。
# 示例1:循环中嵌套条件(遍历1-10,区分奇数、偶数、能被3整除)
for i in range(1, 11):
if i % 3 == 0:
print(f"{i}:能被3整除")
elif i % 2 == 0:
print(f"{i}:偶数")
else:
print(f"{i}:奇数")
# 示例2:条件中嵌套循环(判断用户是否为VIP,VIP可享受循环福利)
is_vip = True
if is_vip:
print("欢迎VIP用户,您可领取3份福利:")
for i in range(1, 4):
print(f" 福利{i}:10元优惠券")
else:
print("普通用户,可前往会员中心开通VIP,享受更多福利~")
# 示例3:实际应用:筛选1-100中的质数(只能被1和自身整除的数)
print("1-100中的质数:", end="")
for num in range(2, 101): # 质数从2开始
is_prime = True # 标记是否为质数
for i in range(2, num): # 判断是否能被2到num-1整除
if num % i == 0:
is_prime = False
break # 能被整除,不是质数,终止内层循环
if is_prime:
print(num, end=" ") # 输出质数
4.5 嵌套避坑指南(新手必看)
- 缩进一致:同一级代码块必须保持相同的缩进(推荐4个空格),不要混用Tab和空格,否则会报缩进错误;
- 逻辑清晰:嵌套层数不要过多(建议不超过3层),层数越多,逻辑越复杂,越容易出错;
- 循环条件:嵌套循环中,注意分别控制每个循环的条件,避免出现无限循环;
- 代码可读性:嵌套代码可适当添加注释,区分外层和内层逻辑,方便后续查看和修改。
5 总结
到这里,Python3基础学习第三阶段「流程控制」的核心内容就全部梳理完毕了!这一阶段的知识点,是Python编程的“逻辑核心”——条件语句让程序“学会判断”,循环语句让程序“高效重复”,循环控制让程序“灵活调整”,嵌套让程序“处理复杂逻辑”。
对于新手来说,这一阶段的重点不是死记硬背语法,而是多动手、多练逻辑:
- 每一段代码都要亲手敲一遍,运行后观察结果,修改变量、条件,看看结果会发生什么变化;
- 重点练习嵌套逻辑(尤其是九九乘法表、质数筛选),这是新手最容易卡壳的地方,多练几次就能找到规律;
- 避开常见坑:缩进错误、while无限循环、if条件用=代替==、break/continue作用范围混淆;
- 尝试用流程控制解决简单的实际问题(比如成绩判断、用户登录、数据筛选),将知识点落地。
第三阶段的学习,难度比第二阶段有所提升,但只要坚持每天练习30分钟,多敲代码、多思考逻辑,就能熟练掌握。流程控制是后续学习函数、面向对象、爬虫等高级知识点的基础,一定要打牢!
下一个阶段,我们将学习Python中的“容器”——列表、元组、字典、集合、字符串高级操作,它们能帮我们更高效地存储和处理大量数据,届时会结合本阶段的流程控制知识点,实现更强大的功能。继续加油,稳步解锁Python编程的更多技能吧~
转发请携带作者信息 @怒放吧德德 @一个有梦有戏的人
持续创作很不容易,作者将以尽可能的详细把所学知识分享各位开发者,一起进步一起学习。转载请携带链接,转载到微信公众号请勿选择原创,谢谢!
👍创作不易,如有错误请指正,感谢观看!记得点赞哦!👍
谢谢支持!