Python 入门必学:for/while 循环与控制语句全解析

无论是批量处理100个本地文件、统计数据库1000条用户记录,还是遍历爬虫爬取的10000个目标链接,循环都是编程里最基础也最强大的「自动化重复执行工具」,能帮你彻底从枯燥的手动操作里解脱出来。

Python 官方为开发者准备了两套核心循环方案,各有适用场景,下面我们逐一拆解。


1. 循环的核心分类

Python 中的循环按触发逻辑分为两类:

  • for 遍历循环:按「元素个数/迭代次数」明确执行——适合已知要处理「多少个对象」「多少次操作」的场景
  • while 条件循环:按「布尔条件」持续执行——适合不确定具体结束时间,但清楚「什么时候必须停止」的场景

2. for 遍历循环

for 循环的核心逻辑是「逐个取走可迭代对象的元素,直到取完为止」。

2.1 基础语法结构

注意 Python 用冒号+缩进划分代码块(缩进通常用4个空格,或编辑器自动转换的1个Tab):

# 变量名建议取有语义的(比如遍历名字就用name,不要用i/x)
for 目标变量 in 可迭代对象:
    # 缩进后的代码才是循环体,每次取到新变量都会执行
    循环体代码

2.2 常用场景:遍历序列

列表、元组、字符串、字典都是 Python 内置的可迭代序列,先看最常用的列表遍历:

# 遍历公司实习生名单
interns = ["Alice", "Bob", "Charlie"]
for intern in interns:
    print(f"请 {intern} 同学来会议室签到")

运行结果

请 Alice 同学来会议室签到
请 Bob 同学来会议室签到
请 Charlie 同学来会议室签到

2.3 必学工具:range() 生成整数序列

如果不需要遍历具体对象,只需要执行「N次固定操作」,可以用 range() 函数快速生成整数序列当迭代器。

range() 的三种传参方式

传参个数格式生成范围示例输出
1range(end)0到 end-1 的整数range(5) → [0,1,2,3,4]
2range(start, end)start到 end-1 的整数range(2,5) → [2,3,4]
3range(start, end, step)start到 end-1 且步长为step的整数range(1,10,2) → [1,3,5,7,9]

示例:计算1-100的累加和

sum_total = 0
# range(1,101) 是因为「结束值不包含」,100刚好被包含进去
for num in range(1, 101):
    sum_total += num
print(f"1-100的累加和是:{sum_total}")

运行结果

1-100的累加和是:5050

3. while 条件循环

while 循环会先检查条件是否为 True,如果是就执行循环体,执行完再检查——注意循环体里必须有修改条件的代码,否则会变成「死循环」。

3.1 基础语法结构

# 条件变量要先定义好!
条件变量 = 初始值
while 条件判断:
    # 循环体
    处理逻辑
    # 必须有修改条件的语句,比如 n += 1 或 n -= 2
    条件变量更新

3.2 常用场景:条件性累加

比如用 while 计算100以内所有奇数的和:

sum_odd = 0
n = 99  # 从最大的奇数开始,递减更直观
while n > 0:
    sum_odd += n
    n -= 2  # 每次减2,自动跳过偶数
print(f"100以内奇数的和是:{sum_odd}")

运行结果

100以内奇数的和是:2500

4. 循环控制语句

有时候我们不需要完整执行整个循环——Python 提供了 breakcontinue 两个关键字来干预循环流程。

4.1 break:完全终止循环

一旦遇到 break整个循环会直接跳出,后面的迭代也不会再执行。

示例:找到第一个大于50的数就停止

nums = [12, 34, 56, 78, 90]
for num in nums:
    if num > 50:
        print(f"找到第一个大于50的数:{num},停止搜索")
        break
    print(f"当前数 {num} 不大于50")

运行结果

当前数 12 不大于50
当前数 34 不大于50
找到第一个大于50的数:56,停止搜索

4.2 continue:跳过当前迭代

遇到 continue当前迭代的剩余代码会跳过,直接进入下一轮检查。

示例:只打印1-10中的奇数

for n in range(1, 11):
    if n % 2 == 0:
        continue  # 是偶数就跳过print,直接下一轮
    print(n)

运行结果

1
3
5
7
9

5. 循环的最佳实践与避坑

避坑1:写 while 一定要加「条件修改逻辑」

比如下面这段代码,n 永远是1,循环会无限打印,只能强制终止程序:

# ❌ 错误示范:死循环
n = 1
while n < 10:
    print(n)
    # 缺少了 n += 1

避坑2:别过度使用 break/continue

虽然它们能简化部分代码,但用多了会让循环的执行逻辑「跳来跳去」,可读性变差——尽量把逻辑放在 while 的条件或 for 的迭代器里。

最佳实践1:遍历序列需要索引时用 enumerate()

传统方法(比如单独维护一个 index 变量)容易出错,Python 内置了 enumerate() 函数可以同时返回「索引」和「元素」:

fruits = ["apple", "banana", "orange"]
for idx, fruit in enumerate(fruits):
    print(f"第 {idx+1} 个水果是:{fruit}")  # idx从0开始,通常要加1

最佳实践2:并行遍历多个序列用 zip()

如果需要同时遍历两个长度相同的序列(比如名字和对应的年龄),可以用 zip() 把它们打包成元组迭代:

names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
for name, age in zip(names, ages):
    print(f"{name} 今年 {age} 岁")

6. 入门级练习(附参考答案)

练习1:批量打印问候语

给名单里的每个人打印专属问候语:

# ✅ 参考答案
names = ["Bart", "Lisa", "Adam"]
for name in names:
    print(f"Hello, {name}!")

练习2:计算1-100的偶数和

用两种方法(for+range步长、for+continue)都可以试试:

# ✅ 参考答案(更简洁的range步长法)
sum_even = 0
for num in range(2, 101, 2):
    sum_even += num
print(f"1-100的偶数和是:{sum_even}")

练习3:打印九九乘法表(嵌套循环)

# ✅ 参考答案
for i in range(1, 10):  # i控制行数(1-9)
    for j in range(1, i+1):  # j控制每行的列数(1到i)
        # end="\t" 让每个式子之间用制表符对齐
        print(f"{j}×{i}={i*j}", end="\t")
    print()  # 每行结束后换行

7. 总结

循环是 Python 中处理重复性任务的核心工具,合理选择可以大幅提升效率:

  1. 优先用 for 循环:遍历已知长度的序列/执行固定次数的操作
  2. while 循环:条件性执行(比如猜数字游戏直到猜对为止)
  3. 合理用控制语句break 终止、continue 跳过,但别滥用
  4. 善用内置工具range()enumerate()zip() 能简化代码

如果需要更复杂的迭代功能(比如无限迭代、组合迭代),可以后续学习 Python 标准库的 itertools 模块~