如果你写代码的时候,发现自己正在复制粘贴同一段代码好几次,那你大概率需要一个循环。
举个例子:老板让你打印 1 到 100 这 100 个数,你不会真的一行一行写 100 个 print() 吧?
print(1)print(2)print(3)# ... 写到第100行?
正常人不会这么干。循环就是用来解决这个问题的。
Python 里就两种循环
说实在的,你用到的 99% 的场景,就两种:
for 循环 — 遍历一个序列(列表、字符串、range 等等)
先记结论:优先用 for,while 只在你知道自己要干什么的时候用。
for 循环:最常用,最安全
基本长相就是这样:
for 变量 in 序列: 做点什么
看几个例子你就懂了:
例1:遍历一个列表
fruits = ["苹果", "香蕉", "橘子"]for fruit in fruits:print(fruit)
输出:
苹果香蕉橘子
这个 fruit 变量在每次循环里,依次取列表里的一个值。
例2:用 range() 生成数字序列
range() 是循环里最常用的函数,专门生成连续整数。
# range(5) 生成 0,1,2,3,4for i inrange(5):print(i)
输出:
01234
注意,range(5) 出来的是 0 到 4,不是 0 到 5。这是新手最容易踩的坑。
range 的三种用法
range(5) # 0,1,2,3,4range(1, 5) # 1,2,3,4range(1, 10, 2) # 1,3,5,7,9(步长是2)
记一下:range(起点, 终点, 步长),终点不包含。
例3:打印 1 到 100
回到开头那个问题:
for i inrange(1, 101):print(i)
一行搞定。这才是写代码该有的样子。
while 循环:条件控制
while 的写法更接近口语:当某个条件成立,就一直做。
count = 0while count < 5:print(f"当前计数: {count}") count += 1# 别忘了加1,不然死循环
输出:
当前计数: 0当前计数: 1当前计数: 2当前计数: 3当前计数: 4
⚠️ 踩坑记录:死循环
新手用 while 最容易犯的错误——忘了让条件最终变成 False。
# 危险!千万不要运行whileTrue:print("我出不去了...")
这会让程序永远跑下去,直到你手动关掉它。
怎么避免?
break 和 continue:循环的刹车和跳车
break — 提前结束整个循环
for i inrange(1, 100):if i == 5:breakprint(i)
输出:
1234
break 一遇到,循环直接结束,后面的次数都不跑了。
continue — 跳过当前这一次,进入下一次
for i inrange(1, 6):if i == 3:continueprint(i)
输出:
1245
3 被跳过了,其他照常。
else 跟循环也能搭
这点很多老手都不知道:for 和 while 后面可以跟 else。
这个 else 的执行时机是:循环正常结束的时候执行(没被 break 打断的话)。
for i inrange(3):print(i)else:print("循环结束了,没被 break 打断")
输出:
012循环结束了,没被 break 打断
如果是被 break 结束的:
for i inrange(5):if i == 2:breakprint(i)else:print("你不会看到这句话")
输出:
01
else 块里的内容不会执行,因为循环是被 break 中断的。
这个写法在「查找某个元素,找到了就 break,没找到就执行另外的逻辑」的场景里特别好用。
嵌套循环:循环里套循环
一个循环解决一层问题,两层问题就套两层。
for i inrange(1, 4):for j inrange(1, 4):print(f"{i} x {j} = {i * j}")print("------")
这其实就是打印一个 3x3 的乘法表片段。
注意:嵌套层数多了可读性差,一般嵌套两层就到头了。三层以上,建议想想能不能换写法。
实际场景:批量处理文件
假设你有个文件夹,里面有 100 个 txt 文件,你想把所有文件内容合并成一个:
import os# 获取所有 txt 文件files = [f for f in os.listdir(".") if f.endswith(".txt")]# 循环读取并合并all_content = ""for filename in files:withopen(filename, "r", encoding="utf-8") as f: all_content += f.read()# 写入合并后的文件withopen("merged.txt", "w", encoding="utf-8") as f: f.write(all_content)print(f"合并完成,共处理了 {len(files)} 个文件")
这就是循环的真正价值——一个简单动作,重复 100 次,代码只用写一遍。
今日总结
| |
|---|
for | |
range() | |
while | |
break | |
continue | |
| |
一句话总结:循环就是帮你不重复自己。 能用 for 就用 for,while 留给那些你不知道要跑多少次的场景。
小作业
打印一个 9x9 乘法表(就是九九乘法表那种阶梯形状),提示:用两层循环。
明天讲列表和字典——Python 里最常用的两种数据结构,也是你之后天天打交道的东西。
封面图由 AI 生成