WEB项目地址:演示地址
① 循环核心概念与生活化类比解析
你想想"循环"在生活里长什么样?
- 每天早上:闹钟响 → 按掉 → 刷牙 → 洗脸 → 吃早饭。这套动作你重复了 365 天,这就是循环。
- 快递员派件:拿起一个包裹 → 看门牌号 → 放门口 → 下一个包裹。直到送完所有包裹,循环停止。
Python 里的循环就干两件事:重复做某事 ,以及知道什么时候停。
两种主要形式:
for循环:适合"我知道要遍历哪些东西"的场景。比如你手里有一份 10 个包裹的清单,挨个处理。while循环:适合"我不知道要重复几次,得看条件"的场景。比如猜数字游戏------你猜不对就不停,猜对了才停。
现在脑子里有这个画面就行,后面每个环节都会动手写。
② 开发环境搭建与首个循环代码运行
别一上来就用 PyCharm 那种大家伙,新手容易被界面吓到。
我的推荐(最轻量):
- 去 python.org 下载 Python 3.x(勾选"Add Python to PATH")。
- 安装完后,按
Win + R,输入cmd,在命令行里敲python,看到>>>提示符就说明环境好了。 - 或者用 VS Code + 插件,也够用。
但最最友好的方式是:直接用在线编辑器 ,比如 pythontutor.com 或 replit.com,打开就能写,还能看到变量一步步怎么变。
你的第一个循环代码------不用管太多,先跑起来:
python
# 打印 3 次 "我开始学循环了!"
for i in range(3):
print("我开始学循环了!")
把这段代码敲进去(建议手动敲,不要复制),点击运行。如果看到三行文字,恭喜------你已经正式写了第一个循环。
接着改个数字试试:range(5)、range(10),看看输出变化。感受一下什么叫"重复执行"。
③ for 循环遍历列表与字符串实操
for 循环最核心的能力是**"逐个取出来处理"**。
场景一:遍历列表(一组数据)
python
students = ["小明", "小红", "小刚"]
for name in students:
print(f"{name},你的作业交了吗?")
执行过程:Python 先把 "小明" 赋值给 name,执行 print;再把 "小红" 赋值给 name,执行 print......直到列表末尾。
你可以试着往列表里加两个名字,再跑一遍。
场景二:遍历字符串(逐个字符)
python
word = "Python"
for ch in word:
print(ch)
输出是 P、y、t、h、o、n 每个占一行。
实用小技巧 :如果你想同时拿到"下标"和"值",用 enumerate:
python
students = ["小明", "小红", "小刚"]
for index, name in enumerate(students):
print(f"第{index+1}个同学叫{name}")
这个在日后处理 Excel 数据时极其常用。
④ while 循环条件控制与动态交互实现
while 翻译成人话:只要某条件为真,就一直做。
最简单的例子:
python
count = 0
while count < 3:
print(f"当前计数:{count}")
count = count + 1 # 这行极其重要!
如果删掉 count = count + 1,count 永远等于 0,永远小于 3------死循环,电脑会卡爆。
动态交互实战:写一个猜数字游戏(不用随机数,先固定答案)
python
secret = 7
guess = 0
while guess != secret:
guess = int(input("猜一个数字:"))
if guess < secret:
print("小了")
elif guess > secret:
print("大了")
print("恭喜,猜对了!")
运行这段代码,它会一直问你要数字,直到你输入 7。
观察一下:while 的条件是 guess != secret,只要成立就循环。猜对后条件变为 False,循环结束。
⑤ break 与 continue 精准控制流程技巧
这两个词是循环里的"方向盘"。
break:立即终止整个循环,跳出去。
python
for i in range(10):
if i == 5:
break
print(i)
# 输出 0 1 2 3 4(到5就停了)
continue:跳过本次循环的剩余代码,直接进入下一次。
python
for i in range(5):
if i == 2:
continue
print(i)
# 输出 0 1 3 4(2被跳过了)
实战场景 :你遍历一批用户数据,遇到"已删除"的用户就用 continue 跳过,遇到"管理员"用户就用 break 停止(因为只找第一个管理员)。
python
users = ["普通用户", "已删除", "普通用户", "管理员", "普通用户"]
for u in users:
if u == "已删除":
continue
if u == "管理员":
print("找到管理员了!")
break
print(f"处理:{u}")
运行这个,仔细看输出------"已删除"被跳过了,遇到"管理员"后循环直接结束,后面的"普通用户"没机会处理。
⑥ 嵌套循环处理多维数据案例演示
嵌套循环就是"循环里面套循环"。想象一个钟表:秒针转一圈,分针走一格;分针转一圈,时针走一格。
二维表格场景:你有 3 个班级,每个班 4 个学生,要逐个点名。
python
classes = [
["A班-小明", "A班-小红", "A班-小刚", "A班-小丽"],
["B班-张三", "B班-李四", "B班-王五", "B班-赵六"],
["C班-刘一", "C班-陈二", "C班-杨三", "C班-黄四"]
]
for class_room in classes: # 外层:遍历每个班
print(f"开始点名 {class_room[0][:2]}")
for student in class_room: # 内层:遍历班里的每个人
print(f" {student}")
print("点名结束\n")
执行时,外层循环走一次,内层循环走完一整轮。所以输出是:A班4个人 → B班4个人 → C班4个人。
九九乘法表是嵌套循环的经典:
python
for i in range(1, 10): # 外层:1到9
for j in range(1, i+1): # 内层:1到i
print(f"{j}×{i}={i*j}", end=" ")
print() # 换行
运行一下,看看是不是你小学背的那个形状。
⑦ 无限循环陷阱识别与安全退出方法
无限循环 :条件永远为 True,代码永远跑不完。
三种常见写法:
python
# 写法一:直接写 True
while True:
print("停不下来")
# 写法二:条件恒成立
i = 0
while i < 10:
print(i)
# 忘了写 i += 1
# 写法三:条件逻辑错误
x = 5
while x != 0:
x = x + 1 # 越加离0越远
安全退出方法:
- 用
break做逃生门------这是最推荐的写法:
python
while True:
user_input = input("输入 exit 退出:")
if user_input == "exit":
print("退出循环")
break
print(f"你输入了:{user_input}")
- 设置最大尝试次数,防止意外:
python
max_attempts = 5
attempt = 0
while attempt < max_attempts:
attempt += 1
# 做某事
- 如果真的卡死了 :按
Ctrl + C强制中断程序(在命令行里有效)。
⑧ 常见缩进错误与逻辑死循环排查
新手 90% 的报错都是缩进问题。Python 用缩进来表示"代码块"------缩进一样,表示属于同一层。
错误示范 1:缩进不一致
python
for i in range(3):
print(i)
print("完成") # 前面多了空格,报错 IndentationError
错误示范 2:忘记缩进
python
for i in range(3):
print(i) # 报错,print 必须缩进
逻辑死循环排查三步走:
- 检查循环变量是否在变化 ------有没有
i = i + 1或i += 1? - 打印中间值调试 ------在循环里加
print(f"当前 i={i}"),看它有没有朝预期方向变化。 - 检查条件方向 ------是
>还是<?是and还是or?经常有人把while i < 10写成while i > 10,结果一次都不执行,或者反过来写成while i != 10但i从 0 开始每次加 3,永远到不了 10,死循环。
一个实用的调试习惯 :写循环时先把 print 加上,确认逻辑对了再删掉。
⑨ 循环性能优化与简洁写法进阶
当你处理的数据量变大(比如一万条以上),循环效率就会变敏感。
优化点 1:减少不必要的计算
python
# 不推荐:每次循环都计算 len()
for i in range(len(my_list)):
process(my_list[i])
# 推荐:直接遍历元素
for item in my_list:
process(item)
优化点 2:用列表推导式代替简单 for 循环
python
# 传统写法
squares = []
for i in range(10):
squares.append(i * i)
# 简洁写法(列表推导式)
squares = [i * i for i in range(10)]
列表推导式不仅更简洁,执行速度也更快(底层做了优化)。
优化点 3:用 sum()、max() 等内置函数代替手写循环
python
# 不推荐
total = 0
for n in numbers:
total += n
# 推荐
total = sum(numbers)
优化点 4:while 能转 for 就转 for
for 循环在 Python 内部做了优化,通常比 while 快一些,而且更安全(不容易死循环)。如果遍历次数是确定的,优先用 for。
⑩ 综合实战:构建自动化数据处理脚本
把前面所有知识串起来,做一个学生成绩统计脚本。
需求:有一个班级的成绩表(姓名 + 三门课分数),需要计算每个人的总分和平均分,并标记"优秀"(平均 >= 90)和"需努力"(平均 < 60)。
完整代码:
python
# 数据:每个学生三门课的成绩
students = [
["张伟", 88, 92, 78],
["李娜", 95, 98, 97],
["王强", 45, 52, 38],
["赵敏", 70, 75, 80],
["陈静", 90, 91, 89]
]
print("=" * 40)
print("学生成绩统计报告")
print("=" * 40)
# 用于统计整体情况
total_scores = []
excellent_count = 0
need_work_count = 0
for student in students:
name = student[0]
scores = student[1:] # 从第2个元素开始取分数
# 计算总分和平均分
total = sum(scores)
avg = total / len(scores)
total_scores.append(total)
# 判断等级
if avg >= 90:
level = "优秀 🌟"
excellent_count += 1
elif avg < 60:
level = "需努力 💪"
need_work_count += 1
else:
level = "良好"
# 输出该生信息
print(f"{name}: 总分{total} 平均{avg:.1f} 【{level}】")
print("=" * 40)
print(f"班级人数:{len(students)}")
print(f"优秀人数:{excellent_count}")
print(f"需努力人数:{need_work_count}")
print(f"全班平均分:{sum(total_scores) / len(total_scores):.1f}")
print("=" * 40)
运行这段代码,你会看到一份完整的成绩报告。
然后你自己动手改造(这一步很重要):
- 添加一个新学生数据,看输出是否自动更新。
- 把"良好"的门槛改成 70 分以上,看输出变化。
- 再加一列"排名"(按总分排序)------提示:用
sorted()加key参数。 - 如果遇到分数为负数或超过 100 的数据,用
continue跳过并提示"数据异常"。
当你把这四点都改完并且跑通,恭喜------你已经能用循环处理真实的数据了。
最后说两句:
循环这东西,光看是学不会的,一定要亲手敲、亲手改、亲手把代码搞崩再修好。我建议你把这篇教程里的每一段代码都手动敲一遍,改几个数字看看效果,故意制造个死循环体验一下 Ctrl+C 的救命功能。
遇到问题不要怕,把报错信息复制到搜索引擎里,十有八九有人踩过同样的坑------编程就是从"抄代码"到"改代码"再到"写代码"的过程,而循环就是你迈出的第一步。加油。 🚀