15.1 基本区别(掌握)
for
循环:用于遍历可迭代对象(如列表、元组、字符串、字典、集合等)中的每一个元素,通常适用于明确知道迭代次数的场景。while
循环:在条件为True
时不断执行代码块,适用于不确定迭代次数的场景,直到某一条件满足才结束循环。
15.2 语法结构对比(掌握)
for
循环的基本语法
for 变量 in 可迭代对象:
代码块
while
循环的基本语法
while 条件:
代码块
15.3 使用场景(掌握)
for
循环的适用场景
- 遍历已知长度的可迭代对象:如列表、字符串、元组等,直接遍历元素。
- 需要计数的循环:可以与
range()
配合,执行固定次数的循环。 - 生成列表:列表生成式通常使用
for
循环生成。
while
循环的适用场景
- 条件控制的循环:在满足条件时重复执行代码,而不是固定次数。
- 用户输入验证:不断检查输入,直到符合要求为止。
- 无限循环:在服务器或实时监控中常见,通过
while True
持续执行,直到满足某个终止条件。
15.4 优缺点比较(掌握)
特性 | for 循环 | while 循环 |
---|---|---|
适用情况 | 明确的迭代次数或固定的序列 | 不确定的迭代次数,基于条件的循环 |
可读性 | 代码简洁明了,适合处理序列 | 适合动态条件的循环,但逻辑略复杂 |
灵活性 | 依赖可迭代对象或 range 控制次数 | 可处理任意复杂的条件 |
效率 | 更适合于遍历对象,代码效率高 | 适合条件控制,可能会陷入死循环 |
15.5 for
和 while
循环的替换(掌握)
在某些情况下,for
和 while
循环可以相互替换:
15.5.1 使用 while
循环模拟 for
循环
示例:用
while
模拟一个固定次数的循环。i = 0 while i < 5: print(i) i += 1
等价于:
for i in range(5): print(i)
15.5.2 使用 for
循环模拟简单的条件控制
虽然 for
循环并不直接适用于条件控制,但可以通过遍历 itertools.cycle
实现无限循环,并在循环体中条件判断以 break
退出。
from itertools import cycle
for _ in cycle([None]):
user_input = input("请输入 'exit' 退出: ")
if user_input == "exit":
break
15.6 示例对比(掌握)
示例 1:遍历列表
for
循环:fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
while
循环:fruits = ["apple", "banana", "cherry"] i = 0 while i < len(fruits): print(fruits[i]) i += 1
示例 2:条件控制的循环
for
循环(通过break
终止):for _ in range(100): # 实际上是人为限定了次数 user_input = input("请输入 'exit' 退出: ") if user_input == "exit": break
while
循环:while True: user_input = input("请输入 'exit' 退出: ") if user_input == "exit": break
15.7 循环的嵌套使用(了解)
for
和 while
循环可以嵌套使用,适合处理多层数据结构或条件复杂的情况。
示例:遍历二维列表中的元素,并根据条件判断是否打印
matrix = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] for row in matrix: for element in row: if element % 2 == 0: print(element)
在这个示例中,for
循环用于遍历列表,而条件判断和打印操作可以在嵌套循环中控制。
15.8 优先选择哪种循环(掌握)
- 选择
for
循环:当明确知道迭代次数或需要遍历可迭代对象时,优先选择for
循环。它的结构清晰、代码简洁。 - 选择
while
循环:当循环次数不确定或需要条件控制时,选择while
循环。它在处理需要灵活控制结束条件的场景中更合适。
2 条评论
建议在开头增加背景铺垫,增强读者代入感。
案例丰富且贴合主题,论证逻辑环环相扣。