出版者的话 译者序 前言 第1章 Python编程简介 1 1.1 计算的基本概念 1 1.1.1 为何编程 1 1.1.2 硬件和软件 2 1.1.3 数字领域 3 1.1.4 编程的过程 4 1.1.5 为何选择Python 5 1.1.6 Python编程环境 6 1.2 一个完整的Python程序 7 1.2.1 打印输出 9 1.2.2 字符串文字(字符串) 9 1.2.3 转义序列 10 1.2.4 打印复杂图形 11 1.2.5 注释、空白和可读性 12 1.3 程序错误 14 1.3.1 语法错误 15 1.3.2 逻辑错误 17 1.4 程序分解 17 1.4.1 函数 18 1.4.2 控制流 21 1.4.3 标识符和关键字 23 1.4.4 调用其他函数的函数 24 1.4.5 运行时错误的例子 26 1.5 案例研究:绘图 27 1.5.1 结构化版本 27 1.5.2 没有冗余的*终版本 29 1.5.3 执行流分析 30 本章小结 31 自测题 32 习题 35 编程项目 39 第2章 数据和确定循环 40 2.1 基本数据概念 40 2.1.1 数据类型 40 2.1.2 表达式 41 2.1.3 字面量 43 2.1.4 算术运算符 44 2.1.5 运算优先级 46 2.1.6 混合和转换类型 48 2.2 变量 49 2.2.1 使用变量的程序 52 2.2.2 自增/自减运算符 56 2.2.3 打印多个值 57 2.3 for循环 59 2.3.1 使用循环变量 62 2.3.2 关于循环范围的细节 64 2.3.3 字符串乘法与打印部分行 67 2.3.4 嵌套for循环 70 2.4 管理复杂性 72 2.4.1 作用域 72 2.4.2 伪代码 74 2.4.3 常量 78 2.5 案例研究:沙漏图 80 2.5.1 问题分解和伪代码 81 2.5.2 初始结构化版本 83 2.5.3 增加一个常量 84 本章小结 86 自测题 86 习题 91 编程项目 94 第3章 参数与图形 98 3.1 参数 98 3.1.1 参数的机制 103 3.1.2 参数的限制 105 3.1.3 多个参数 107 3.1.4 参数与常量 110 3.1.5 可选参数 110 3.2 返回值 111 3.2.1 math模块 113 3.2.2 random模块 116 3.2.3 定义返回值的函数 119 3.2.4 返回多个值 123 3.3 交互式程序 124 3.4 图形 128 3.4.1 DrawingPanel简介 129 3.4.2 画线和形状 131 3.4.3 颜色 133 3.4.4 使用循环画图 137 3.4.5 文本与字体 139 3.4.6 图像 141 3.4.7 画图过程分解 141 3.5 案例研究:抛射轨迹 144 3.5.1 非结构化解决方案 146 3.5.2 结构化解决方案 148 3.5.3 图形版本 150 本章小结 153 自测题 153 习题 158 编程项目 164 第4章 条件执行 166 4.1 if/else语句 166 4.1.1 关系运算符 168 4.1.2 if/else语句嵌套 170 4.1.3 if/else语句分解 174 4.1.4 多个判别条件 176 4.2 累积算法 176 4.2.1 累积求和 176 4.2.2 求*小/*大值循环 178 4.2.3 使用if语句的累积求和 181 4.2.4 舍入误差 183 4.3 函数中的条件执行 185 4.3.1 前置条件和后置条件 185 4.3.2 抛出异常 186 4.3.3 回顾返回值 189 4.3.4 分支选择推理 191 4.4 字符串 193 4.4.1 字符串方法 194 4.4.2 按索引访问字符 196 4.4.3 字母和数值之间的转换 200 4.4.4 累积文本算法 202 4.5 案例研究:基础代谢率 203 4.5.1 单人非结构化BMR解决方案 204 4.5.2 双人非结构化BMR解决方案 207 4.5.3 双人结构化BMR解决方案 209 4.5.4 过程式设计启发式 212 本章小结 216 自测题 216 习题 221 编程项目 223 第5章 程序逻辑与不确定循环 224 5.1 while循环 224 5.1.1 寻找*小因数的循环 226 5.1.2 循环的启动 227 5.2 栅栏算法 230 5.2.1 带if语句的栅栏循环 232 5.2.2 哨兵循环 234 5.2.3 带*小/*大值的哨兵循环 236 5.3 布尔逻辑 238 5.3.1 逻辑运算符 239 5.3.2 布尔变量与标志 241 5.3.3 谓词函数 243 5.3.4 布尔Zen 245 5.3.5 短路求值 248 5.4 健壮的程序 251 5.4.1 try/except语句 252 5.4.2 处理用户错误 255 5.5 断言与程序逻辑 256 5.5.1 针对断言的推理 258 5.5.2 一个详细的断言示例 259 5.6 案例研究:数字猜谜游戏 262 5.6.1 不带提示的初始版本 263 5.6.2 带提示的随机化版本 264 5.6.3 健壮的*终版本 267 本章小结 270 自测题 270 习题 276 编程项目 279 第6章 文件处理 280 6.1 文件读取基础知识 280 6.1.1 数据和文件 280 6.1.2 在Python中读取文件 282 6.1.3 基于行的文件处理 285 6.1.4 文件结构与消耗式输入 286 6.1.5 提示输入文件 290 6.2 基于标记的处理 292 6.2.1 数值输入 294 6.2.2 处理非法输入 295 6.2.3 行与标记的混合使用 296 6.2.4 处理不同数量的标记 297 6.2.5 复杂的输入文件 301 6.3 **文件处理 303 6.3.1 多行输入记录 303 6.3.2 文件输出 305 6.3.3 从网页中读取数据 308 6.4 案例研究:邮政编码查询 310 本章小结 316 自测题 316 习题 318 编程项目 321 第7章 列表 323 7.1 列表基础知识 323 7.1.1 创建列表 324 7