分支和循环结构实战
基础教学 1 min read

分支和循环结构实战

Blog Author

分支和循环结构实战

通过前面两节课的学习,大家对 Python 中的分支结构和循环结构已经有了初步的认知。分支结构和循环结构是构造程序逻辑的基础,它们的重要性不言而喻,但在实际开发中,很多同学在理解语法后仍感到“无从下手”。解决的关键就是:理解+实战+练习!


🔍 理解:为什么我们需要分支与循环?

  • 分支结构:根据不同的条件选择不同的执行路径 → 就像人在做判断,“如果这样,那就……否则就……”
  • 循环结构:反复执行同一组操作 → 就像人在重复劳动,“直到……为止,一直做这件事”

没有它们,程序只能一条道走到底,无法智能响应用户输入,也无法处理重复任务。


🛠 使用场景与实战技巧汇总

场景 推荐结构 示例说明
判断是否为素数 嵌套 for+if+break 用平方根减少循环次数
求斐波那契数列 for+变量递推 多变量同时赋值技巧
数字拆解(个位、十位等) 数学运算 // % 拆分数位常用于密码、验证码等
枚举所有组合方案 多层嵌套 for 穷举法搜索有限解空间
直到猜对/满足条件 while 循环 常配合 break 跳出
模拟博弈或交互式游戏 综合 ifwhile、随机数 模拟真实行为流程

🎯 实战案例教学讲解


✅ 例子1:100以内的素数

🔍 场景说明:

判断一个数是否为素数,是算法面试、刷题和系统安全等场景中的经典需求。

💡 实战技巧:

  • 从 2 开始枚举;
  • 优化判断上界为 √n
  • is_prime 用布尔标志配合 break
for num in range(2, 100):
    is_prime = True
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            is_prime = False
            break
    if is_prime:
        print(num)

✅ 例子2:斐波那契数列(前 20 项)

🔍 场景说明:

在算法题、金融建模、物理结构设计中广泛使用,如“兔子繁殖”、“黄金分割”。

💡 实战技巧:

  • 初始值 a = 0, b = 1
  • a, b = b, a + b 是同时更新的语法糖;
  • for _ in range(n) 是不关心计数器变量时的惯用写法。
a, b = 0, 1
for _ in range(20):
    a, b = b, a + b
    print(a)

✅ 例子3:水仙花数(阿姆斯特朗数)

🔍 场景说明:

数位运算题常见于笔试与项目中,如银行卡校验、验证码解析。

💡 实战技巧:

  • % 10 得个位;// 10 % 10 得十位;
  • 整体思路是拆数位 → 做乘方 → 累加判断
  • 一般固定为 3 位,也可扩展为 N 位水仙花数搜索器。
for num in range(100, 1000):
    low = num % 10
    mid = num // 10 % 10
    high = num // 100
    if num == low ** 3 + mid ** 3 + high ** 3:
        print(num)

✅ 例子3拓展:正整数的反转

🔍 场景说明:

常用于身份证号反转、二维码逆序处理、数字回文判断等。

💡 实战技巧:

  • 循环提取末位;
  • reversed_num = reversed_num * 10 + num % 10 是关键递推式;
  • while num > 0: 控制反转流程。
num = int(input('num = '))
reversed_num = 0
while num > 0:
    reversed_num = reversed_num * 10 + num % 10
    num //= 10
print(reversed_num)

✅ 例子4:百钱百鸡问题

🔍 场景说明:

典型的穷举法题目,训练循环嵌套、优化搜索范围。

💡 实战技巧:

  • 小鸡的数量是 3 的倍数,先设 z = 0~99 step 3
  • 提前利用 z = 100 - x - y 减少嵌套层级;
  • 条件判断中融合数学规则,提高效率。
for x in range(0, 21):
    for y in range(0, 34):
        z = 100 - x - y
        if z % 3 == 0 and 5 * x + 3 * y + z // 3 == 100:
            print(f'公鸡: {x}只, 母鸡: {y}只, 小鸡: {z}只')

✅ 例子5:CRAPS 赌博游戏模拟器

🔍 场景说明:

综合项目实战:涉及输入校验、循环控制、随机数模拟、资产状态判断。

💡 实战技巧:

  • random.randrange(1, 7) 模拟骰子;
  • while money > 0: 是典型资产控制;
  • 嵌套 while True: 处理未决的下一步操作;
  • 使用清晰的结构组织流程:下注 → 摇点 → 判断 → 收益/亏损。
import random


money = 1000
while money > 0:
    print(f'你的总资产为: {money}元')
    while True:
        debt = int(input('请下注: '))
        if 0 < debt <= money:
            break
    first_point = random.randrange(1, 7) + random.randrange(1, 7)
    print(f'\n玩家摇出了{first_point}点')
    if first_point in (7, 11):
        print('玩家胜!\n')
        money += debt
    elif first_point in (2, 3, 12):
        print('庄家胜!\n')
        money -= debt
    else:
        while True:
            current_point = random.randrange(1, 7) + random.randrange(1, 7)
            print(f'玩家摇出了{current_point}点')
            if current_point == 7:
                print('庄家胜!\n')
                money -= debt
                break
            elif current_point == first_point:
                print('玩家胜!\n')
                money += debt
                break
print('你破产了, 游戏结束!')

✅ 总结与学习建议

🎓 知识回顾:

内容类型 应用要点
分支结构 多条件决策(if-elif-else),用于执行路径控制
循环结构 重复执行任务(for/while),配合 break/continue 进行流程控制
实战技巧 使用组合结构解决实际问题(如穷举、模拟、校验等)
数学技巧 数位分解、公式运算、边界优化

🧠 最佳实践建议

  1. 多做实战题:不能只读代码,要亲自写出类似的逻辑;
  2. 拆解问题思维:能将一个问题拆成“判断 + 循环 +输出”的组合;
  3. 善用调试输出:中间变量多打印,查错更方便;
  4. 写规范好读的代码:如缩进对齐、变量命名清晰、逻辑层次分明;
  5. 尝试自己“造题”再写:想象一个生活场景,试着用程序解决它。

🎯 下一目标:函数与模块

你已经能写出结构复杂的程序了,接下来,我们将学习:

  • 如何将重复代码封装成函数
  • 如何拆分程序成模块
  • 如何传递参数和返回值

这将带你走向“更大规模、可维护”的编程世界!

如需本节内容的 PPT、PDF 打印版或编程题练习册,请随时告诉我。