流程控制与推导式
条件判断
1 2 3 4 5 6 7 8
| score = 86
if score >= 90: grade = "A" elif score >= 80: grade = "B" else: grade = "C"
|
重点:
- 条件表达式最终会被转换成真假。
- 多分支从上到下判断,命中后停止。
- 复杂条件要拆变量,让代码更可读。
for 循环
1 2
| for char in "Python": print(char)
|
常用组合:
1 2 3 4
| names = ["Ada", "Bob", "Cathy"]
for index, name in enumerate(names, start=1): print(index, name)
|
1 2 3 4 5
| names = ["Ada", "Bob"] scores = [95, 80]
for name, score in zip(names, scores): print(name, score)
|
while 循环
1 2 3 4
| count = 3 while count > 0: print(count) count -= 1
|
适合:
break、continue、else
1 2 3 4 5 6
| for n in range(2, 10): for x in range(2, n): if n % x == 0: break else: print(n, "is prime")
|
循环的 else 在没有被 break 打断时执行。
推导式
列表推导式:
1
| squares = [x * x for x in range(10)]
|
带条件:
1
| even_squares = [x * x for x in range(10) if x % 2 == 0]
|
字典推导式:
1
| lengths = {word: len(word) for word in ["python", "java"]}
|
集合推导式:
1
| unique_lengths = {len(word) for word in ["hi", "to", "python"]}
|
match 语句
1 2 3 4 5 6 7 8 9
| command = "start"
match command: case "start": print("starting") case "stop": print("stopping") case _: print("unknown")
|
适合处理结构清晰的多分支逻辑。
常见坑
- 在循环中修改正在遍历的列表。
- 推导式写得太复杂,反而难读。
range(10) 是 0 到 9,不包含 10。
- 忘记
while 循环的退出条件。
练习
- 打印九九乘法表。
- 找出 1 到 100 的所有质数。
- 把列表中的负数过滤掉。
- 用推导式把英文单词列表转换成长度字典。