技术架构
/
Feb 08, 2026
Step 4 第三篇:势篇 (The Momentum) —— 激水漂石,流程控制
<!-- Title: 第三篇:势篇 (The Momentum) —— 激水漂石,流程控制 -->
<!-- ID: 138 -->
<!-- Series: Python 兵法:零基础建站与 AI 编程实战 (ID: 7) -->
<!-- Author: 潘卫 -->
## 第三篇:势篇 (The Momentum) —— 激水漂石,流程控制
### 【原文】
> **激水之疾,至于漂石者,势也。鸷鸟之疾,至于毁折者,节也。**
> **译文**:湍急的流水能漂动巨石,是因为它有“势”能(积蓄的力量突然释放)。猛禽飞得快,能捕杀猎物,是因为它善于把握“节”(时机)。
### 【兵法详解】
代码如果只是从第一行执行到最后一行,那是流水账,没有任何智能可言。真正的威力在于 **流程控制** —— 根据战况改变流向(判断),或者源源不断地输送兵力(循环)。这就是代码的“势”。
### 【第一势:因敌制胜 (If 判断)】
战场瞬息万变,必须根据敌情做决策。Python 使用 `if`、`elif` (else if)、`else` 来构建逻辑分支。
```python
enemy_distance = 50 # 敌人距离
if enemy_distance > 100:
print("距离太远,弓箭手待命。")
# 这里可以安排休息逻辑
elif enemy_distance > 20:
print("进入射程!放箭!")
# 这里执行射击函数
else:
print("敌人冲上来了!拔刀肉搏!")
# 这里执行近战函数
```
* **逻辑嵌套**:`if` 里面还可以套 `if`,就像计谋中有计谋。但层数不宜过多,否则会变成“意大利面条代码”。
* **新特性**:Python 3.10 引入了 `match-case` 语法(类似 Switch),处理多状态判断更优雅。
### 【第二势:车轮战法 (Loop 循环)】
当你需要重复做同一件事(比如给 1000 个士兵发工资,或者攻击 10 次),千万不要写 1000 行代码。要利用循环的“势”。
**1. `for` 循环 (点名)**
适合已知次数、或遍历一个集合的循环。
```python
# range(5) 生成 [0, 1, 2, 3, 4]
for i in range(5):
print(f"第 {i+1} 波箭雨发射!")
# 遍历装备
weapons = ["刀", "枪", "剑", "戟"]
for weapon in weapons:
print(f"装备检查:{weapon}")
```
**2. `while` 循环 (死守)**
适合条件满足就一直执行的循环,往往不知道要循环多少次。
```python
arrows = 100
# 只要箭矢数量大于 0,就一直射击
while arrows > 0:
print(f"剩余箭矢:{arrows},继续射击!")
arrows = arrows - 1 # 消耗一支箭
# 特殊战术:如果敌人举白旗,提前停止
enemy_surrender = False
if enemy_surrender:
print("敌军投降,停止射击!")
break # break 用于强行跳出循环
print("战斗结束。")
```
### 【第三势:未雨绸缪 (Try-Except)】
战场上总有意外(Bug)。网络断了、文件找不到、除数为零……如果程序报错,通常会直接崩溃(Crash),全军覆没。
用 `try-except` 机制可以捕获意外,执行预案,保证主力部队不退场。
```python
try:
# 尝试执行危险操作
print("正在计算炮击坐标...")
damage = 100 / 0 # 制造一个数学错误(除以零)
print("坐标计算完成") # 这行不会被执行
except ZeroDivisionError:
# 发生特定意外时的预案
print("⚠️ 错误:除数不能为零,启用备用坐标!")
except Exception as e:
# 发生其他未知意外
print(f"⚠️ 发生了未知错误: {e}")
finally:
# 无论是否出错,都会执行(比如清理战场)
print("炮击结束,冷却炮管。")
print("战斗继续...") # 程序不会崩溃,继续执行后续逻辑
```
---
P
潘卫
南京市沉思波网络科技有限责任公司创始人、CEO
您的观点 (可选)
🎁 注册账号,同步您的个性化学习路径