Python编程:从入门到实践
章节

第 5 章 if 语句

程序开始做判断,逻辑分叉也随之出现

第五章把程序从顺序执行推进到条件决策,让代码可以根据不同状态走不同路径。

章节主张

条件判断的价值不在 if 语法本身,而在于它让程序第一次具备了基于状态做决策的能力。

中文释读

一旦引入 if,程序就不再只是按部就班地执行,而会开始根据布尔表达式、比较、成员关系和多个条件组合来分支。作者在这一章里其实是在教“逻辑雕刻”:你要学会把现实条件翻译成程序可判断的规则。无论是游戏得分、用户权限、数据筛选还是 Web 表单,都离不开这一层。

本章知识路线

  1. 程序价值的一半来自判断何时做什么
  2. 判断背后真正管理的是状态

关键论点

  • 条件判断是程序响应状态变化的基础。
  • 布尔表达式和成员测试会频繁出现在真实代码里。
  • 多条件组合比单一 if 更接近业务世界。

行动清单

  • 把现实问题拆成一组可判断的条件。
  • 练习 if / elif / else 的结构化表达。
  • 注意列表、大小写和布尔状态带来的细节分支。

源章节深读

第 5 章 if 语句 编程时经常需要检查⼀系列条件,并据此决定采取什么措施。在 Python 中,if 语句让你能够检查程序的当前状态,并采取相应的措 施。 在本章中,你将学习条件测试,以检查你感兴趣的任何条件。你将学习简 单的 if 语句,以及如何创建⼀系列复杂的 if 语句来确定当前到底处于什 么条件下。接下来,你将把学到的知识应⽤于列表:编写⼀个 for 循环, 以⼀种⽅式处理列表中的⼤多数元素,以另⼀种⽅式处理包含特定值的元 素。 5.1 ⼀个简单的⽰例 下⾯的⽰例演⽰了如何使⽤ if 语句来正确地处理特殊的情形。假设你有⼀ 个汽⻋列表,想将其中每辆汽⻋的名称打印出来。对于⼤多数汽⻋,应以 ⾸字⺟⼤写的⽅式打印其名称,但是汽⻋名 'bmw' 应以全⼤写的⽅式打 印。

5.1 一个简单的示例

5.1 ⼀个简单的⽰例 下⾯的⽰例演⽰了如何使⽤ if 语句来正确地处理特殊的情形。假设你有⼀ 个汽⻋列表,想将其中每辆汽⻋的名称打印出来。对于⼤多数汽⻋,应以 ⾸字⺟⼤写的⽅式打印其名称,但是汽⻋名 'bmw' 应以全⼤写的⽅式打 印。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.1 一个简单的示例 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

5.2 条件测试

5.2 条件测试 每条 if 语句的核⼼都是⼀个值为 True 或 False 的表达式,这种表达式 称为条件测试。 Python 根据条件测试的值是 True 还是 False 来决定是否 执⾏ if 语句中的代码。如果条件测试的值为 True, Python 就执⾏紧跟在 if 语句后⾯的代码;如果为 False, Python 就忽略这些代码。 5.2.1 检查是否相等 ⼤多数条件测试将⼀个变量的当前值与特定的值进⾏⽐较。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.2 条件测试 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

5.3 if 语句

5.3 if 语句 理解条件测试之后,就可以开始编写 if 语句了。if 语句有很多种,选择 使⽤哪⼀种取决于要测试的条件数。前⾯在讨论条件测试时,列举了多个 if 语句⽰例,下⾯更深⼊地讨论这个主题。 5.3.1 简单的 if 语句 最简单的 if 语句只有⼀个条件测试和⼀个操作: if conditional_test: do something 第⼀⾏可包含任意条件测试,⽽在紧跟在测试后⾯的缩进代码块中,可执 ⾏任意操作。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.3 if 语句 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

5.4 使用 if 语句处理列表

5.4 使⽤ if 语句处理列表 结合使⽤ if 语句和列表,可完成⼀些有趣的任务:对列表中特定的值做特 殊处理;⾼效管理不断变化的情形,如餐馆是否还有特定的⾷材;证明代 码在各种情形下都将按预期运⾏。 5.4.1 检查特殊元素 本章开头通过⼀个简单的⽰例演⽰了如何处理特殊值 'bmw'—— 需要采⽤ 不同的格式打印它。现在你对条件测试和 if 语句有了⼤致的认识,下⾯来 进⼀步研究如何检查列表中的特殊值,并对其做合适的处理。 继续使⽤前⾯的⽐萨店⽰例。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.4 使用 if 语句处理列表 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

5.5 设置 if 语句的格式

5.5 设置 if 语句的格式 本章的每个⽰例都展⽰了良好的格式设置习惯。在条件测试的格式设置⽅ ⾯, PEP 8 提供的唯⼀建议是:在诸如 ==、>= 和 <= 等⽐较运算符两边各 添加⼀个空格。例如: if age < 4: 要⽐ if age<4: 更好。 这样的空格不会影响 Python 对代码的解读,只是让代码阅读起来更容易。 动⼿试⼀试 练习 5.12 :设置 if 语句的格式 审核你在本章编写的程序,确保正确 地设置了条件测试的格式。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.5 设置 if 语句的格式 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

5.6 小结

5.6 ⼩结 在本章中,你⾸先学习了如何编写结果要么为 Ture、要么为 False 的条 件测试。然后学习了如何编写简单的 if 语句、if-else 语句和 if- elif-else 语句。在程序中,可以使⽤这些结构来测试特定的条件,以确 定这些条件是否满⾜。你接着学习了在使⽤ for 循环⾼效处理列表元素 时,如何对某些元素做特殊处理。你还再次学习了 Python 在代码格式⽅⾯ 提出的建议。遵循这些建议,即便你编写的程序越来越复杂,其代码也依 然易于阅读和理解。

这节解决什么:这一节主要解决《第 5 章 if 语句》里一个更具体的子问题:5.6 小结 该怎样落到实际代码或项目动作上。

怎么用到自己的系统:不要只把它当书中的小节标题,最好把它改写成一个你能亲手运行、修改或调试的微练习。

提醒:常见误区是只看懂例子表面流程,却没有把这一节抽成自己能迁移的规则。

辨析题

为什么 if 语句会让程序看起来更像在‘思考’?

本章图版学习路径

程序价值的一半来自判断何时做什么

判断背后真正管理的是状态