Python 核心 · #3 / 11
控制流
if/elif/else、for、while
为什么重要
控制流是你把问题描述翻译成步骤的方式。
核心思想
条件语句选择路径;循环让工作重复进行而无需复制粘贴。只要你事先知道可迭代对象,就优先用 for 而不是 while——for 更难读错,也更难写成死循环。
试一试
if / elif / else 阶梯,配上一个小小的分级器:
def grade(score):
if score >= 90: return "A"
elif score >= 80: return "B"
elif score >= 70: return "C"
elif score >= 60: return "D"
else: return "F"
for s in [95, 82, 71, 64, 30]:
print(s, grade(s))
用 for 遍历一个 range,并用 enumerate 同时拿到索引和值:
names = ["Ada", "Linus", "Margaret", "Grace"]
for i, n in enumerate(names, start=1):
print(f"{i:>2}. {n}")
当停止条件是某种状态而不是次数时,while 是最佳选择。break 提前退出;continue 跳到下一次迭代。
# Find the first square > 100
n = 1
while True:
if n * n > 100:
print("first n with n^2 > 100:", n)
break
n += 1
快速检查
- 问: 什么时候用
continue? 答: 跳过循环体剩下的部分,进入下一次迭代。
小练习
- 求从 1 到 20 所有偶数的和。
- 用一个
while循环打印从 10 到 1 的数字。
常见错误
- 错误:
while里出现死循环。 修正: 更新循环变量。 - 错误:
range里的差一错误。 修正: 记住range不包含终点。
关键要点
- 能用
for遍历可迭代对象时就用它;停止条件基于状态时用while。 - 需要同时拿到索引和值时,
enumerate(seq)胜过range(len(seq))。 break退出,continue跳过——适度使用两者都没问题。- 缩进就是代码块;没有
{}可让你忘记。