循环
1. 为什么需要循环?
- 重复运算:计算 1+2+3+...+10000 不可能手写
- 批量处理:遍历列表中的每个元素
- 条件执行:满足条件时持续执行
Python 有两种循环:for...in 和 while
2. for...in 循环
基本语法
for <变量> in <可迭代对象>:
<执行语句>
遍历列表
names = ['Michael', 'Bob', 'Tracy']
for name in names:
print(name)
# 输出:Michael Bob Tracy(依次打印)
记忆:把每个元素依次代入变量,然后执行缩进块的语句
累加求和
sum = 0
for x in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
sum = sum + x
print(sum) # 55
3. range() 函数
基本用法
range() 生成整数序列,常与 for 配合使用
# range(n):生成 0 到 n-1 的整数序列
list(range(5)) # [0, 1, 2, 3, 4]
# range(start, stop):生成 start 到 stop-1 的整数序列
list(range(1, 5)) # [1, 2, 3, 4]
# range(start, stop, step):指定步长
list(range(0, 10, 2)) # [0, 2, 4, 6, 8]
计算 1-100 的和
sum = 0
for x in range(101): # 0-100
sum = sum + x
print(sum) # 5050(高斯算法验证)
记忆口诀:range(n) 从 0 开始,到 n-1 结束(左闭右开)
4. while 循环
基本语法
while <条件>:
<执行语句>
逻辑:只要条件为 True,就不断循环;条件为 False 时退出
计算 100 以内奇数之和
sum = 0
n = 99
while n > 0:
sum = sum + n
n = n - 2
print(sum) # 2500
for vs while 对比
| 特性 | for...in | while |
|---|---|---|
| 适用场景 | 遍历已知集合 | 条件控制循环 |
| 循环次数 | 由集合长度决定 | 由条件决定 |
| 常见用途 | 遍历列表、字符串 | 未知次数的循环 |
5. break 语句
作用
提前退出整个循环
示例
n = 1
while n <= 100:
if n > 10:
break # 当 n = 11 时,退出循环
print(n)
n = n + 1
print('END')
# 输出:1 2 3 4 5 6 7 8 9 10 END
记忆:break = 打断循环,直接跳出
6. continue 语句
作用
跳过本轮循环,直接开始下一轮
示例:只打印奇数
n = 0
while n < 10:
n = n + 1
if n % 2 == 0:
continue # 跳过偶数
print(n)
# 输出:1 3 5 7 9
记忆:continue = 继续下一轮, 跳过本轮剩余代码
7. break vs continue
| 语句 | 作用 | 影响范围 |
|---|---|---|
| break | 退出整个循环 | 循环结束 |
| continue | 跳过本轮,继续下一轮 | 只影响当前轮 |
# break 示例
for i in range(5):
if i == 2:
break
print(i)
# 输出:0 1(遇到2就退出)
# continue 示例
for i in range(5):
if i == 2:
continue
print(i)
# 输出:0 1 3 4(跳过2,继续执行)
8. 死循环
什么是死循环?
条件永远为 True,程序永远循环下去
# ⚠️ 死循环示例
while True:
print('无限循环...')
如何退出死循环?
- Ctrl + C:中断程序
- 强制结束 Python 进程
避免死循环
- 确保循环条件能变为
False - 使用
break提供退出机制
# ✅ 正确:有退出条件
n = 0
while True:
n = n + 1
if n > 10:
break
print(n)
9. 常见操作速查
for 循环常用模式
# 遍历列表
for item in [1, 2, 3]:
print(item)
# 遍历字符串
for char in 'hello':
print(char)
# 遍历范围
for i in range(10):
print(i)
# 带索引遍历
for i, item in enumerate(['a', 'b', 'c']):
print(i, item) # 0 a, 1 b, 2 c
while 循环常用模式
# 计数循环
n = 0
while n < 10:
print(n)
n += 1
# 条件循环
while condition:
do_something()
if exit_condition:
break
# 无限循环(带退出)
while True:
user_input = input('输入: ')
if user_input == 'quit':
break
嵌套循环
# 打印九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print(f'{j}x{i}={i*j}', end='\t')
print()
10. 快速记忆总结
- 两种循环:
for...in:遍历已知集合while:条件控制
- range() 函数:
range(n)生成 0 到 n-1(左闭右开) - 控制语句:
break:退出整个循环continue:跳过本轮,继续下一轮
- 使用建议:
- 尽量少用
break和continue,避免逻辑混乱 - 通常配合
if语句使用
- 尽量少用
- 死循环:用
Ctrl+C退出
11. 常见错误
错误1:忘记更新循环变量
# ❌ 死循环
n = 0
while n < 10:
print(n)
# 忘记 n = n + 1
# ✅ 正确
n = 0
while n < 10:
print(n)
n = n + 1
错误2:range() 范围错误
# ❌ 错误:想打 印1-10,但range(10)是0-9
for i in range(10):
print(i)
# ✅ 正确:range(1, 11) 是 1-10
for i in range(1, 11):
print(i)
错误3:break/continue 位置错误
# ❌ break 在循环外,语法错误
if condition:
break # SyntaxError
# ✅ break 必须在循环内
while True:
if condition:
break