找回密码
 立即注册
搜索
查看: 253|回复: 4

Python 循环完全入门指南:for、while、break、continue 一次搞懂

[复制链接]

27

主题

30

回帖

194

积分

管理员

积分
194
发表于 2026-6-8 10:10:25 | 显示全部楼层 |阅读模式
摘要:Python 循环是每个初学者必过的坎。本文通过 10+ 个实例,系统讲解 for、while、break、continue 的用法与区别,让你彻底告别死循环和逻辑混乱。


循环,是程序从「一次性工具」变成「自动化引擎」的分水岭。没有循环,你只能处理孤零零的一条数据;学会循环,整张表格、整个文件、整个 API 的返回结果,全都在你掌控之中。但偏偏循环是新手最容易卡住的地方——什么时候用 for?什么时候用 while?break 和 continue 到底谁是谁?这篇文章的目标就是一个:让你读完以后,再也无需纠结。

for 循环:当你明确知道要遍历什么

for 循环的核心语义是「对……中的每一个」。只要你手上有一个可迭代对象——列表、字符串、字典、文件——for 就是最自然的选择。
  1. # 遍历列表
  2. fruits = ["苹果", "香蕉", "橘子"]
  3. for fruit in fruits:
  4.     print(f"今天吃{fruit}")
复制代码
Python 的 for 和 C 系语言不同,它不是靠索引计数来推进的,而是靠迭代器协议。这意味着你几乎可以对任何集合类型直接上手:
  1. # 遍历字典的键和值
  2. scores = {"小明": 92, "小红": 85, "小刚": 78}
  3. for name, score in scores.items():
  4.     print(f"{name} 考了 {score} 分")

  5. # 遍历字符串
  6. for char in "Python":
  7.     print(char)
复制代码
当你需要数值范围时,range() 是好搭档:
  1. # range(start, stop, step)
  2. for i in range(1, 10, 2):  # 1, 3, 5, 7, 9
  3.     print(i)
复制代码
一个常见的坑:边遍历边修改

新手经常会写出这样的代码:
  1. # 错误示范
  2. nums = [1, 2, 3, 4, 5]
  3. for n in nums:
  4.     if n % 2 == 0:
  5.         nums.remove(n)  # 灾难——迭代器被打乱了
复制代码
遍历的同时修改原集合,会导致跳过元素或索引越界。正确做法是创建一个新列表:
  1. nums = [1, 2, 3, 4, 5]
  2. nums = [n for n in nums if n % 2 != 0]
复制代码

回复

使用道具 举报

27

主题

30

回帖

194

积分

管理员

积分
194
 楼主| 发表于 2026-6-8 10:19:48 | 显示全部楼层
while 循环:当你不知道要跑多少轮

while 解决的是另一类问题:你在循环开始前,不关心次数——你只关心条件什么时候变成 False。
  1. # 经典场景:用户输入
  2. password = ""
  3. while password != "123456":
  4.     password = input("请输入密码:")
  5. print("登录成功")
复制代码
这类场景用 for 是没法写的,因为你根本不知道用户会输错多少次。
另一个典型用法是处理有界但不可预知长度的数据流:
  1. # 读取文件直到末尾
  2. with open("data.txt") as f:
  3.     line = f.readline()
  4.     while line:
  5.         print(line.strip())
  6.         line = f.readline()
复制代码
while 最危险的坑:死循环

每一个 while 循环的循环体内,都必须有某个操作在无情地逼近终止条件。如果忘了这一点,程序就会永远跑下去:
  1. # 危险——永远不会停
  2. count = 0
  3. while count < 10:
  4.     print(count)
  5.     # 漏掉了 count += 1
复制代码
一个防御性习惯:每次写 while 的时候,先在循环体末尾写下推动条件变化的语句,然后再去写上面的逻辑。
回复

使用道具 举报

27

主题

30

回帖

194

积分

管理员

积分
194
 楼主| 发表于 2026-6-8 10:23:57 | 显示全部楼层


break:紧急出口

break 的作用简单粗暴:立即终止整个循环,跳到循环之后的第一条语句。它就像消防通道——平时不走,一旦触发,游戏结束。
最常见的用法是在 while True 的无限循环里设置出口:
  1. while True:
  2.     cmd = input("输入命令(q 退出):")
  3.     if cmd == "q":
  4.         break
  5.     print(f"执行:{cmd}")
复制代码
for 里用 break 的经典场景是「找到了就收工」:
  1. # 在列表中查找第一个偶数
  2. nums = [1, 3, 7, 8, 9, 10]
  3. for n in nums:
  4.     if n % 2 == 0:
  5.         print(f"第一个偶数是 {n}")
  6.         break
  7. # 输出:第一个偶数是 8(9 和 10 不会再看)
复制代码
break 还可以配合 for...else 来实现「搜遍全场没找到」的判断:

  1. for n in nums:
  2.     if n > 100:
  3.         print("找到了超大数")
  4.         break
  5. else:
  6.     print("没有超过 100 的数")
复制代码
这里 else 只在循环没有被 break 中断时执行——它是一个很容易被误解但很实用的模式。
回复

使用道具 举报

27

主题

30

回帖

194

积分

管理员

积分
194
 楼主| 发表于 2026-6-8 10:32:06 | 显示全部楼层
continue:跳过本轮

如果说 break 是整栋楼的消防警铃,continue 就是某一层的自动门——它只跳过当前这一轮迭代,循环继续跑下一轮。
  1. # 只打印奇数
  2. for i in range(10):
  3.     if i % 2 == 0:
  4.         continue  # 偶数直接跳过,不执行 print
  5.     print(i)
  6. # 输出:1, 3, 5, 7, 9
复制代码
数据清洗时 continue 尤其好用:

  1. # 过滤脏数据
  2. raw_data = ["42", "  ", "hello", "99", ""]
  3. for item in raw_data:
  4.     item = item.strip()
  5.     if not item:          # 空字符串跳过
  6.         continue
  7.     if not item.isdigit():  # 非数字跳过
  8.         continue
  9.     print(int(item))
  10. # 输出:42, 99
复制代码
continue 的一个不易察觉的好处是:它能减少嵌套层级。对比一下:

  1. # 深嵌套——阅读体验差
  2. for item in data:
  3.     if item:
  4.         if item.is_valid():
  5.             if item.score > 60:
  6.                 process(item)

  7. # 用 continue 拉平——清爽很多
  8. for item in data:
  9.     if not item:
  10.         continue
  11.     if not item.is_valid():
  12.         continue
  13.     if item.score <= 60:
  14.         continue
  15.     process(item)
复制代码


回复

使用道具 举报

27

主题

30

回帖

194

积分

管理员

积分
194
 楼主| 发表于 2026-6-8 10:33:43 | 显示全部楼层
四种工具的选择心法



不用背。写多了自然内化。但第一次写的时候,把它当成一个检查清单:你是不是在用一个集合?那就 for。你是不是在等某个条件变为 False?那就 while。


循环不是语法,是一种思维习惯。当你能不假思索地把「对这张表里的每一行做……」「一直问,直到他回答正确的密码」「遇到无效数据就跳过,但不中断整体扫描」翻译成 Python 代码时,循环就不再是需要「攻克」的知识点,而是工具箱里最趁手的一把钳子。
如果你觉得这篇文章有用,可以把它收藏起来,下次写循环卡壳的时候翻出来看一眼那张表。也欢迎分享给正在学 Python 的朋友——帮一个人少走一小时的死循环,也算功德一件。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|老村长论坛

GMT+8, 2026-7-28 01:03 , Processed in 0.026695 second(s), 21 queries .

Powered by Discuz! X5.0

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表