Python基础 | 循环

为什么学循环?小明的「重复噩梦」

小明的周三
  1. 给 10 个同学发「作业已交」的确认消息
  2. 晨跑时数圈数(操场 5 圈,每圈 400 米)
  3. 游戏里刷 100 次副本攒装备
循环的本质

让电脑自动重复做某事,把小明从「机械劳动」中解放出来。这是编程最爽的技能之一 —— 写 1 行代码,省 100 次操作!

第 1 课:for 循环:小明的「自动夸人机器」

👉 场景:给全班同学发个性化表扬(再也不用复制粘贴!)

同学名单 = ["小红", "小刚", "小丽", "小强"]

for 名字 in 同学名单:  # 从名单里逐个拿名字
    print(f"{名字},你今天的数学题解法超巧妙!")
    print("特别是最后一步的辅助线,老师都点赞了!\n")

小明的小心机:

  • 运行结果自动生成 4 条不同消息(新增同学时,只需改名单)
  • 缩进的代码会重复执行(for后面的代码块)

升级玩法:给 100 个同学发消息(把名单改成range(1, 101))

for 学号 in range(1, 101):  # 生成1-100的数字
    print(f"学号{学号}的同学,作业已收到!")

第 2 课:while 循环:小明的「晨跑计数器」

👉 场景:跑 5 圈自动提醒,每圈报距离

圈数 = 0
while 圈数 < 5:  # 条件满足就继续跑
    圈数 = 圈数 + 1
    print(f"🏃 第{圈数}圈完成!累计2000米(当前400×{圈数})")

print("🎉 目标达成!明天挑战6圈~")

小明的报错现场:

  • 忘记圈数+1 → 无限循环(电脑疯狂输出,只能强制终止)
  • 教训:while必须有改变条件的代码,否则变「永动机」

进阶应用:边跑边喝水(用continue跳过某次)

圈数 = 0
while 圈数 < 5:
    圈数 += 1
    if 圈数 == 3:  # 第3圈太累,喝水休息
        print("🥤 中场休息,补充水分~")
        continue  # 跳过本次循环的后续代码
    print(f"跑第{圈数}圈,还剩{5-圈数}圈!")

第 3 课:循环 + 条件:小明的「游戏闯关」

👉场景:赛尔号刷 10 次副本,掉落道具就提前结束

已刷次数 = 0
while 已刷次数 < 10:
    已刷次数 += 1
    掉落 = "雷神之锤" if 已刷次数 == 7 else "普通矿石"
    
    print(f"第{已刷次数}次副本:掉落{掉落}")
    if 掉落 == "雷神之锤":
        print("🎉 欧气爆发!提前结束,去强化装备~")
        break  # 跳出循环

print(f"共刷{已刷次数}次,剩余体力:100-{已刷次数*10}")

运行结果(第 7 次掉落神器)

第7次副本:掉落雷神之锤  
🎉 欧气爆发!提前结束...  
共刷7次,剩余体力:30  
(小明:感谢break救我手酸!)

循环的「3 大死亡陷阱」

无限循环
# 错误!条件永远True
while 1 == 1:  # ❌ 快按Ctrl+C终止!
    print("小明被困在循环里了...")

# 正确✅ 加终止条件
while 圈数 < 5:
    圈数 += 1
缩进错误(该重复的没重复)
# 错误!print在循环外面,只执行1次
for 名字 in 同学名单:
    消息 = f"{名字},作业已交"  # 正确缩进
print(消息)  # ❌ 错误缩进,只打印最后1个同学

# 正确✅ 缩进对齐
for 名字 in 同学名单:
    消息 = f"{名字},作业已交" 
    print(消息)  # 正确缩进
range () 边界搞错
# 想循环5次,结果跑6次!
for i in range(5):  # 0-4,共5次 ✅
for i in range(1, 6):  # 1-5,共5次 ✅
for i in range(5, 0):  # ❌ 不会执行!range(start, end)需start < end

避坑口诀:for 遍历有边界,while 条件会改变,缩进对齐是关键  

实战:小明的「自动作业检查器」

场景:检查 20 道选择题,统计正确率

正确答案 = ["A", "C", "B", "A", "D"] * 4  # 20题,重复4组
小明答案 = ["A", "C", "B", "A", "D"] * 3 + ["C", "C", "C"]  # 故意错3题

正确数 = 0
for 题号 in range(20):
    if 小明答案[题号] == 正确答案[题号]:
        正确数 += 1
    else:
        print(f"⚠️ 第{题号+1}题错误!正确答案{正确答案[题号]}")

正确率 = 正确数 / 20 * 100
print(f"\n📝 正确率:{正确率:.1f}%(对{正确数}题,错{20-正确数}题)")

小明的错题本:

  • 输出标出错误题号,自动统计,省去逐题核对的时间
  • 升级:把答案存 Excel,用pandas自动读取(下一篇教程预告!)

写给小明的「循环哲学」

  • 能用循环,绝不动手:重复 3 次以上的操作,就该考虑循环
  • 先想结束条件:写 while 前先问「什么时候停下来?」
  • 用 print 调试:循环中加print(圈数),实时看执行过程(治好了小明的「玄学编程」)

总结:小明已掌握的「偷懒魔法」

✅ for循环:遍历列表 / 数字(自动夸人、作业检查)
✅ while循环:条件满足时重复(晨跑计数、游戏刷装)
✅ break/continue:提前结束 / 跳过某次(欧气退游、中场休息)
✅ 避坑:无限循环、缩进错误、range 边界

挑战:帮小明写「单词听写器」!
条件:

  • 循环 5 次,每次输入单词
  • 如果连续 2 次正确,提前结束(用变量记录连续正确数)

(💡 提示:用while+if组合,定义连续正确 = 0)

报错急救箱:
遇到IndentationError → 检查循环内代码是否对齐(用 4 个空格或 Tab)
遇到卡死 → 立即按Ctrl+C,检查while条件是否能改变

← 返回资讯