# 知识库

# 2.2.1 条件语句

条件语句根据条件的真假选择执行不同代码，是 Python 程序控制语句。双分支一般形式如下，其中条件1和 `else` 后面的冒号必不可少；要素为条件1、代码块1和代码块2。执行过程：先计算条件1，若为真则执行代码块1，否则执行代码块2。

```python
a = 75
if a >= 60:
    print('成绩及格')
else:
    print('成绩不及格')
```

也可用链式比较 `'A' <= a <= 'Z'` 判断大写字母，用 `x.find('中国') >= 0` 判断是否包含子串，用 `x in course` 判断课程是否在列表中。例2-1 对 `grades = [85, 90, 38, 52, 88, 41, 63]` 用 `sum(grades) / len(grades)` 求平均分后再与 60 比较。

特殊情况下可以没有 `else`，形成单分支。求绝对值时，仅当 `a < 0` 才执行 `a = -a`，再输出 `a`。多种条件分别处理时用 `if-elif-else` 多分支：BMI 小于 18.5 偏瘦、小于 24 正常、小于 28 超重、否则肥胖；`elif` 按书写顺序判断，前面为真则不再执行后面。例2-2 按月份输出季节：3–5 月春季、6–8 月夏季、9–11 月秋季、12 月或 1–2 月冬季。

嵌套分支是在某一分支内部再写条件语句。Python 依赖缩进区分代码块，缩进不齐会导致语法错误或逻辑错误。例2-3 先按月份判断天数（1、3、5、7、8、10、12 月 31 天，4、6、9、11 月 30 天），2 月再嵌套闰年判定：`(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)` 成立则 29 天，否则 28 天。实践中还可用条件语句做选课校验或拼写检查（如 `enchant` 库的 `d.check(word)`）。常见坑：漏写冒号；嵌套缩进错位或混用空格与 Tab；`input()` 返回字符串却未用 `int()`/`float()` 转换；把 `find()` 找不到时的 `-1` 当成“已找到”；多分支条件顺序写错，导致后面分支无法进入。

## 关键要点
- 双分支：`if 条件1:` 代码块1 `else:` 代码块2；条件1和 `else` 后的冒号必不可少。
- 执行过程：先计算条件1，为真执行代码块1，否则执行代码块2。
- 单分支可以没有 `else`，只在条件为真时执行代码块。
- 多分支用 `if-elif-else`，按书写顺序依次判断，前面为真则跳过后面。
- 嵌套分支靠缩进区分内外层；缩进错误会导致语法错误或逻辑错误。
- 闰年判定：`(year % 4 == 0 and year % 100 != 0) or (year % 400 == 0)`。
- 常见坑：漏冒号、缩进混乱、`input()` 未转换类型、`find()` 返回 `-1`、`elif` 顺序错误。
