一、循环的核心思想
循环的本质是**“满足条件时重复执行一段代码”**,就像生活中:
- 重复数 1 到 10(已知次数)→ 用
for循环 - 重复喝水直到不渴(未知次数)→ 用
while循环
所有循环都包含 3 个核心要素:
- 初始化:循环开始前的初始状态(如计数器
i = 0) - 条件判断:决定是否继续循环的规则(如
i < 10) - 更新:每次循环后改变状态(如
i += 1)
二、for 循环(遍历循环)
for 循环是 Python 中最常用的循环,适用于已知循环次数或遍历可迭代对象(列表、字符串、字典、range 等)的场景。
1. 基本语法
for 变量 in 可迭代对象:
循环体代码(缩进!)
# 循环结束后执行的代码(无缩进)
2. 核心用法
(1)遍历序列(列表/字符串/元组)
# 遍历列表
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
print(f"我喜欢吃 {fruit}")
# 遍历字符串
word = "Python"
for char in word:
print(f"字符:{char}")
输出:
我喜欢吃 apple
我喜欢吃 banana
我喜欢吃 orange
字符:P
字符:y
字符:t
字符:h
字符:o
字符:n
(2)遍历数字范围(range 函数)
range() 是生成整数序列的核心工具,语法:
range(n):生成 0 到 n-1 的整数(如range(3)→ 0,1,2)range(start, end):生成 start 到 end-1 的整数(如range(1,4)→ 1,2,3)range(start, end, step):指定步长(如range(0,10,2)→ 0,2,4,6,8)
# 数 1 到 5
for i in range(1, 6):
print(i)
# 倒序输出 10,8,6,4,2
for i in range(10, 0, -2):
print(i)
(3)遍历字典
student = {"name": "小明", "age": 18, "score": 90}
# 遍历键
for key in student:
print(f"键:{key},值:{student[key]}")
# 遍历键值对(推荐)
for k, v in student.items():
print(f"{k} = {v}")
3. for 循环的 else 子句
Python 特有的语法:else 块会在循环正常结束(未被 break 中断)时执行。
# 示例:检查列表中是否有偶数
nums = [1, 3, 5, 7]
for num in nums:
if num % 2 == 0:
print("找到偶数")
break
else:
print("列表中无偶数") # 会执行这行
三、while 循环(条件循环)
while 循环适用于未知循环次数的场景,只要条件为 True,就会持续执行。
1. 基本语法
初始化变量
while 条件表达式:
循环体代码
更新变量(避免死循环!)
2. 核心用法
(1)基础示例:数 1 到 5
i = 1 # 初始化
while i <= 5: # 条件判断
print(i)
i += 1 # 更新(必须!否则死循环)
(2)未知次数循环:猜数字游戏
import random
target = random.randint(1, 10) # 生成1-10的随机数
guess = 0
while guess != target:
guess = int(input("猜一个1-10的数字:"))
if guess > target:
print("猜大了!")
elif guess < target:
print("猜小了!")
print(f"恭喜猜对了!数字是 {target}")
(3)while 循环的 else 子句
和 for 循环一样,else 块在循环正常结束时执行:
i = 1
while i <= 3:
print(i)
i += 1
else:
print("循环正常结束") # 会执行
3. 死循环(重点避坑)
如果 while 的条件永远为 True,且没有 break 中断,会导致死循环(程序卡死)。
# 错误示例(死循环)
# i = 1
# while i <= 5:
# print(i) # 没有 i += 1,i 永远是 1
# 正确写法:加 break 控制退出
while True: # 故意写死循环
user_input = input("输入 q 退出:")
if user_input == "q":
break # 中断循环
print(f"你输入了:{user_input}")
四、循环控制语句(break/continue/pass)
1. break:立即终止整个循环
# 遍历列表,找到 "banana" 就停止
fruits = ["apple", "banana", "orange"]
for fruit in fruits:
if fruit == "banana":
print("找到香蕉,终止循环")
break
print(f"当前水果:{fruit}")
输出:
当前水果:apple
找到香蕉,终止循环
2. continue:跳过当前循环,直接进入下一次
# 打印 1-10 的奇数
for i in range(1, 11):
if i % 2 == 0:
continue # 跳过偶数
print(i)
3. pass:空语句(占位用)
pass 不做任何操作,仅用于语法上需要代码块但暂时不想写逻辑的场景:
for i in range(5):
if i == 3:
pass # 暂时不处理 i=3 的情况
else:
print(i)
五、嵌套循环
循环内部嵌套另一个循环,适用于二维数据(如矩阵、表格)处理。
1. 基础示例:打印九九乘法表
# 外层循环控制行数
for i in range(1, 10):
# 内层循环控制列数
for j in range(1, i+1):
print(f"{j}×{i}={i*j}", end="\t") # end="\t" 不换行,用制表符分隔
print() # 换行
输出:
1×1=1
1×2=2 2×2=4
1×3=3 2×3=6 3×3=9
...
1×9=9 2×9=18 3×9=27 4×9=36 5×9=45 6×9=54 7×9=63 8×9=72 9×9=81
2. 嵌套循环的控制
break/continue 仅作用于当前所在的循环,如需终止外层循环,可使用标记变量:
# 找到 (2,3) 后终止外层循环
found = False
for i in range(1, 4):
for j in range(1, 4):
if i == 2 and j == 3:
print(f"找到目标位置:({i},{j})")
found = True
break # 终止内层循环
if found:
break # 终止外层循环
六、循环的优化技巧
1. 尽量用 for 代替 while
for 循环更简洁、不易出错(无需手动更新计数器),优先使用。
2. 避免不必要的循环
- 用内置函数(如
sum()、max())代替手动循环计算:nums = [1,2,3,4,5] # 低效:手动循环求和 total = 0 for num in nums: total += num # 高效:用 sum() 内置函数 total = sum(nums)
3. 迭代时避免修改原列表
遍历列表时修改原列表会导致遍历异常,可遍历副本:
nums = [1,2,3,4,5]
# 错误:遍历中删除元素,会跳过部分值
# for num in nums:
# if num % 2 == 0:
# nums.remove(num)
# 正确:遍历列表副本
for num in nums[:]: # nums[:] 生成副本
if num % 2 == 0:
nums.remove(num)
print(nums) # [1,3,5]
七、总结
关键点回顾
- for 循环:适用于已知次数/遍历可迭代对象(列表、range、字典等),Python 中优先使用。
- while 循环:适用于未知循环次数的场景,必须确保有退出条件(避免死循环)。
- 控制语句:
break终止整个循环,continue跳过当前次循环,else子句在循环正常结束时执行。 - 嵌套循环:用于二维数据处理,
break/continue仅作用于当前循环。 - 优化原则:优先用内置函数代替手动循环,遍历列表时避免直接修改原列表。
书签篮