Python3基础:精通流程控制,让程序“有逻辑地执行”

7 阅读18分钟

第三阶段:精通流程控制,让程序“有逻辑地执行”

😄生命不息,写作不止

🔥 继续踏上学习之路,学之分享笔记

👊 总有一天我也能像各位大佬一样

🏆 博客首页   @怒放吧德德  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 ,但可以通过字典模拟。

Python中真的没有switch语句吗_python没有switch语法吗-CSDN博客

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编程的“逻辑核心”——条件语句让程序“学会判断”,循环语句让程序“高效重复”,循环控制让程序“灵活调整”,嵌套让程序“处理复杂逻辑”。

对于新手来说,这一阶段的重点不是死记硬背语法,而是多动手、多练逻辑

  1. 每一段代码都要亲手敲一遍,运行后观察结果,修改变量、条件,看看结果会发生什么变化;
  2. 重点练习嵌套逻辑(尤其是九九乘法表、质数筛选),这是新手最容易卡壳的地方,多练几次就能找到规律;
  3. 避开常见坑:缩进错误、while无限循环、if条件用=代替==、break/continue作用范围混淆;
  4. 尝试用流程控制解决简单的实际问题(比如成绩判断、用户登录、数据筛选),将知识点落地。

第三阶段的学习,难度比第二阶段有所提升,但只要坚持每天练习30分钟,多敲代码、多思考逻辑,就能熟练掌握。流程控制是后续学习函数、面向对象、爬虫等高级知识点的基础,一定要打牢!

下一个阶段,我们将学习Python中的“容器”——列表、元组、字典、集合、字符串高级操作,它们能帮我们更高效地存储和处理大量数据,届时会结合本阶段的流程控制知识点,实现更强大的功能。继续加油,稳步解锁Python编程的更多技能吧~


转发请携带作者信息  @怒放吧德德 @一个有梦有戏的人
持续创作很不容易,作者将以尽可能的详细把所学知识分享各位开发者,一起进步一起学习。转载请携带链接,转载到微信公众号请勿选择原创,谢谢!
👍创作不易,如有错误请指正,感谢观看!记得点赞哦!👍
谢谢支持!