第1 章 计算机和编程概述 1
1.1 概述 1
1.2 硬件和软件 2
1.2.1 硬件 2
1.2.2 中央处理器 3
1.2.3 主存 3
1.2.4 辅助存储设备 4
1.2.5 输入设备 5
1.2.6 输出设备 5
1.2.7 软件 5
检查点 6
1.3 计算机如何存储数据 6
1.3.1 存储数字 7
1.3.2 存储字符 8
1.3.3 高级数字存储 9
1.3.4 其他类型的数据 9
检查点 10
1.4 程序如何工作 10
1.4.1 从机器语言到汇编语言 12
1.4.2 高级语言 13
1.4.3 关键字、操作符和语法:概述 14
1.4.4 编译器和解释器 15
检查点 17
1.5 使用Python 17
1.5.1 安装Python 17
1.5.2 Python 解释器 17
1.5.3 IDLE 编程环境 20
复习题 21
第2 章 输入、处理和输出 25
2.1 设计程序 25
2.1.1 程序开发周期 25
2.1.2 关于设计过程的更多说明 26
2.1.3 伪代码 27
2.1.4 流程图 28
检查点 28
2.2 输入、处理和输出 28
2.3 用print 函数显示输出 29
检查点 31
2.4 注释 31
2.5 变量 32
2.5.1 用赋值语句创建变量 33
2.5.2 多重赋值 35
2.5.3 变量命名规则 35
2.5.4 用print 函数显示多项内容 37
2.5.5 变量重新赋值 37
2.5.6 数值数据类型和字面值 38
2.5.7 用str 数据类型存储字符串 39
2.5.8 让变量引用不同数据类型 40
检查点 40
2.6 从键盘读取输入 41
检查点 44
2.7 执行计算 45
2.7.1 浮点和整数除法 47
2.7.2 操作符优先级 48
2.7.3 用圆括号分组 49
2.7.4 求幂操作符 50
2.7.5 求余操作符 51
2.7.6 将数学公式转换为编程语句 52
2.7.7 混合类型的表达式和数据类型转换 54
2.7.8 将长语句拆分为多行 55
检查点 56
2.8 字符串连接 56
检查点 57
2.9 print 函数进阶知识 58
2.9.1 阻止print 函数的换行功能 58
2.9.2 指定分隔符 58
2.9.3 转义序列 59
检查点 60
2.10 用f 字符串格式化输出 60
2.10.1 占位符表达式 61
2.10.2 格式化值 61
2.10.3 浮点数四舍五入 62
2.10.4 插入逗号分隔符 63
2.10.5 将浮点数格式化为百分比 64
2.10.6 用科学计数法格式化 64
2.10.7 格式化整数 64
2.10.8 指定最小域宽 65
2.10.9 值的对齐 66
2.10.10 指示符的顺序 68
2.10.11 连接f 字符串 68
检查点 69
2.11 具名常量 70
检查点 71
2.12 海龟图形概述 71
2.12.1 使用海龟图形来画线 71
2.12.2 海龟转向 72
2.12.3 使海龟朝向指定角度 74
2.12.4 获取海龟的当前朝向 75
2.12.5 画笔抬起和放下 75
2.12.6 画圆和画点 76
2.12.7 更改画笔大小 76
2.12.8 更改画笔颜色 77
2.12.9 更改背景颜色 77
2.12.10 重置屏幕 77
2.12.11 指定图形窗口的大小 77
2.12.12 获取海龟的当前位置 78
2.12.13 控制海龟动画的速度 78
2.12.14 隐藏海龟 79
2.12.15 将海龟移到指定位置 79
2.12.16 在图形窗口中显示文本 80
2.12.17 填充形状 81
2.12.18 从对话框获取输入 83
2.12.19 使用turtle.textinput 命令获取字符串输入 85
2.12.20 使用turtle.done() 使图形窗口保持打开状态 86
检查点 93
复习题 94
编程练习 97
第3 章 判断结构和布尔逻辑 101
3.1 if 语句 101
3.1.1 布尔表达式和关系操作符 102
3.1.2 操作符>= 和<= 104
3.1.3 操作符== 104
3.1.4 操作符!= 105
3.1.5 综合运用 105
3.1.6 单行if 语句 107
检查点 108
3.2 if-else 语句 108
检查点 111
3.3 比较字符串 111
检查点 114
3.4 嵌套判断结构和if-elif-else 语句 115
3.4.1 测试一系列条件 118
3.4.2 if-elif-else 语句 120
检查点 121
3.5 逻辑操作符 122
3.5.1 操作符and 122
3.5.2 操作符or 123
3.5.3 短路求值 123
3.5.4 操作符not 123
3.5.5 修订贷款资格判断程序 124
3.5.6 另一个贷款资格判断程序 125
3.5.7 用逻辑操作符检查数字范围 126
检查点 127
3.6 布尔变量 128
检查点 128
3.7 条件表达式 128
3.8 赋值表达式和海象操作符 130
3.9 海龟图形:判断海龟的状态 131
3.9.1 判断海龟位置 132
3.9.2 判断海龟朝向 132
3.9.3 判断笔是否放下 132
3.9.4 判断海龟是否可见 133
3.9.5 判断当前颜色 133
3.9.6 判断画笔大小 134
3.9.7 判断海龟的动画速度 134
检查点 138
复习题 139
编程练习 141
第4 章 循环结构 147
4.1 循环结构简介 147
检查点 148
4.2 while 循环:条件控制循环 148
4.2.1 while 循环是预测试循环 152
4.2.2 无限循环 153
4.2.3 while 循环用作计数控制循环 154
4.2.4 单行while 循环 157
检查点 158
4.3 for 循环:计数控制循环 158
4.3.1 为for 循环使用range 函数 160
4.3.2 在循环内使用目标变量 162
4.3.3 让用户控制循环迭代 165
4.3.4 生成降序可迭代序列 167
检查点 167
4.4 计算累加和 168
检查点 171
4.5 哨兵值 171
检查点 173
4.6 输入校验循环 173
检查点 177
4.7 嵌套循环 178
4.8 循环语句break,continue 和else 184
4.8.1 break 语句 184
4.8.2 continue 语句 186
4.8.3 在循环中使用else 子句 187
4.9 海龟图形:用循环来画图 188
复习题 192
编程练习 193
第5 章 函数 197
5.1 函数简介 197
5.1.1 用函数将程序模块化的好处 198
5.1.2 void 函数和返回值的函数 199
检查点 199
5.2 定义和调用void 函数 199
5.2.1 函数名 199
5.2 2 定义和调用函数 200
5.2.3 调用函数 200
5.2.4 Python 的缩进 203
检查点 203
5.3 使用函数来设计程序 204
5.3.1 使用了函数的程序的流程图 204
5.3.2 自上而下设计 204
5.3.3 层次结构图 205
5.3.4 暂停执行直到用户按Enter 键 208
5.3.5 使用pass 关键字 208
5.4 局部变量 209
检查点 211
5.5 向函数传递实参 211
5.5.1 形参变量的作用域 213
5.5.2 传递多个实参 214
5.5.3 修改形参 216
5.5.4 关键字参数 217
5.5.5 混合使用关键字实参和位置实参 219
5.5.6 仅关键字参数 219
5.5.7 仅位置参数 220
5.5.8 默认实参 220
检查点 223
5.6 全局变量和全局常量 224
检查点 227
5.7 返回值的函数:生成随机数 227
5.7.1 标准库函数和import 语句 227
5.7.2 生成随机数 228
5.7.3 从f 字符串中调用函数 231
5.7.4 在交互模式下尝试使用随机数 231
5.7.5 函数randrange、random 和uniform 234
5.7.6 随机数种子 235
检查点 236
5.8 自定义返回值的函数 236
5.8.1 更高效地利用return 语句 238
5.8.2 使用返回值的函数 239
5.8.3 使用IPO 图 240
5.8.4 返回字符串 245
5.8.5 返回布尔值 245
5.8.6 在校验代码中使用布尔函数 246
5.8.7 返回多个值 247
5.8.8 从函数返回None 247
检查点 249
5.9 math 模块 249
检查点 251
5.10 将函数存储到模块中 252
5.11 海龟图形:使用函数将代码模块化 257
复习题 264
编程练习 267
第6 章 文件和异常 273
6.1 文件输入和输出简介 273
6.1.1 文件类型 275
6.1.2 文件访问方法 275
6.1.3 文件名和文件对象 275
6.1.4 打开文件 276
6.1.5 指定文件位置 277
6.1.6 向文件写入数据 277
6.1.7 从文件读取数据 279
6.1.8 将换行符连接到字符串 282
6.1.9 读取字符串并去掉换行符 283
6.1.10 向现有文件追加数据 284
6.1.11 写入和读取数值数据 285
检查点 288
6.2 使用循环来处理文件 288
6.2.1 使用循环读取文件并检测文件尾 289
6.2.2 使用for 循环读取行 291
检查点 295
6.3 使用with 语句打开文件 295
6.3.1 资源 295
6.3.2 with 语句 295
6.3.3 用with 语句打开多个文件 297
6.3 处理记录 298
检查点 309
6.4 异常 309
6.4.1 处理多个异常 315
6.4.2 用一个except 子句捕获所有异常 316
6.4.3 显示异常的默认错误消息 317
6.4.4 else 子句 318
6.4.5 finally 子句 320
6.4.6 如果异常未被处理怎么办 320
检查点 320
复习题 321
编程练习 323
第7 章 列表和元组 325
7.1 序列 325
7.2 列表简介 325
7.2.1 重复操作符 326
7.2.2 使用 for 循环遍历列表 327
7.2.3 索引 328
7.2.4 len 函数 329
7.2.5 使用for 循环按索引来遍历列表 329
7.2.6 列表是可变的 330
7.2.7 连接列表 332
检查点 333
7.3 列表切片 334
检查点 336
7.4 使用操作符in 查找列表项 336
检查点 337
7.5 列表方法和有用的内置函数 338
7.5.1 append 方法 338
7.5.2 count 方法 340
7.5.3 index 方法 340
7.5.4 insert 方法 341
7.5.5 sort 方法 342
7.5.6 remove 方法 343
7.5.7 reverse 方法 344
7.5.8 del 语句 344
7.5.9 sum 函数 344
7.5.10 函数min 和max 345
检查点 345
7.6 复制列表 345
7.7 处理列表 347
7.7.1 累加列表中的数值 348
7.7.2 计算列表中数值的平均值 349
7.7.3 将列表作为实参传给函数 350
7.7.4 从函数中返回列表 351
7.7.5 随机选择列表元素 355
7.7.6 处理列表和文件 356
7.8 列表推导式 358
检查点 361
7.9 二维列表 361
检查点 364
7.10 元组 365
7.10.1 将不同的元组赋给变量 366
7.10.2 在元组中存储可变对象 367
7.10.3 有什么意义 368
7.10.4 在列表和元组之间转换 368
检查点 369
7.11 使用matplotlib 包绘制列表数据 369
7.11.1 导入pyplot 模块 369
7.11.2 绘制折线图 370
7.11.3 添加标题、轴标签和网格 371
7.11.4 自定义X 轴和Y 轴 372
7.11.5 在数据点上显示标记 376
7.11.6 绘制柱状图 378
7.11.7 自定义条柱宽度 379
7.11.8 更改条柱颜色 380
7.11.9 添加标题、坐标轴标签和自定义
刻度线标签 381
7.11.10 绘制饼图 382
7.11.11 显示切片标签和标题 383
7.11.12 改变切片颜色 384
检查点 384
复习题 385
编程练习 388
第8 章 深入字符串 393
8.1 基本字符串操作 393
8.1.1 访问字符串中的单个字符 393
8.1.2 使用for 循环遍历字符串 393
8.1.3 索引 396
8.1.4 IndexError 异常 396
8.1.5 len 函数 397
8.1.6 字符串连接 397
8.1.7 字符串是不可变的 398
检查点 399
8.2 字符串切片 400
检查点 403
8.3 测试、查找和操作字符串 403
8.3.1 使用操作符in 和not in 测试字符串 403
8.3.2 字符串方法 404
8.3.3 字符串测试方法 404
8.3.4 修改方法 406
8.3.5 查找和替换 408
8.3.6 重复操作符 412
检查点 418
复习题 420
编程练习 422
第9 章 字典和集合 427
9.1 字典 427
9.1.1 创建字典 427
9.1.2 从字典中检索值 428
9.1.3 使用操作符in 和not in 来判断键是否存在 429
9.1.4 向现有字典添加元素 429
9.1.5 删除元素 430
9.1.6 获取字典中的元素个数 431
9.1.7 在字典中混合不同的数据类型 431
9.1.8 创建空字典 432
9.1.9 使用for 循环遍历字典 433
9.1.10 一些字典方法 434
9.1.11 字典合并和更新操作符 448
9.1.12 字典推导式 449
9.1.13 在字典推导式中使用if 子句 451
检查点 452
9.2 集合 453
9.2.1 创建集合 453
9.2.2 获取集合中的元素数量 454
9.2.3 添加和删除元素 454
9.2.4 使用for 循环来遍历集合 456
9.2.5 使用操作符in 和not in 测试集合中的值 457
9.2.6 并集 457
9.2.7 交集 458
9.2.8 差集 458
9.2.9 对称差集 459
9.2.10 子集和超集 460
9.2.11 集合推导式 463
检查点 463
9.3 对象序列化 465
检查点 470
复习题 471
编程练习 475
第10 章 类和面向对象编程 479
10.1 过程式编程和面向对象编程 479
10.1.1 对象的可重用性 480
10.1.2 日常生活中的对象 480
检查点 481
10.2 类 482
10.2.1 类定义 483
10.2.2 隐藏属性 488
10.2.3 将类存储到模块中 491
10.2.4 BankAccount 类 493
10.2.5 __str__ 方法 495
检查点 498
10.3 操作类的实例 498
10.3.1 取值和赋值方法 503
10.3.2 将对象作为参数传递 506
检查点 519
10.4 类的设计技术 519
10.4.1 统一建模语言(UML) 519
10.4.2 确定解决问题所需的类 520
10.4.3 这只是开始 529
检查点 529
复习题 530
编程练习 532
第11 章 继承 537
11.1 继承简介 537
11.1.1 泛化和特化 537
11.1.2 继承和“属于”关系 537
11.1.3 在UML 图中表示继承 545
检查点 550
11.2 多态性 550
检查点 556
复习题 557
编程练习 558
第12 章 递归 559
12.1 递归简介 559
12.2 用递归解决问题 561
12.2.1 使用递归来计算阶乘 562
检查点 565
12.3 递归算法示例 565
12.3.1 用递归对列表元素的一个范围进行求和 565
12.3.2 斐波那契数列 566
12.3.3 寻找最大公约数 567
12.3.4 汉诺塔 568
12.3.5 递归与循环 571
复习题 572
编程练习 574
第13 章 GUI 编程 575
13.1 图形用户界面 575
检查点 576
13.2 使用tkinter 模块 577
检查点 580
13.3 使用Label 控件显示文本 580
13.3.1 为标签添加边框 582
13.3.2 填充 583
检查点 587
13.4 使用Frame 来组织控件 588
13.5 Button 控件和消息框 590
13.6 用Entry 控件获取输入 593
13.7 将标签用作输出字段 596
检查点 602
13.8 单选钮和复选框 602
13.8.1 单选钮 602
13.8.2 为Radiobutton 指定回调函数 605
检查点 608
13.9 Listbox 控件 608
13.9.1 指定列表框大小 609
13.9.2 使用循环来填充列表框 609
13.9.3 在列表框中选择项 610
13.9.4 获取选中的一项或多项 611
13.9.5 从列表框中删除项 613
13.9.6 当用户单击列表项时执行回调函数 613
13.9.7 为列表框添加滚动条 617
检查点 625
13.10 使用Canvas 控件绘制图形 625
13.10.1 Canvas 控件的屏幕坐标系 626
13.10.2 画线:create_line 方法 627
13.10.3 画矩形:create_rectangle 方法 629
13.10.4 画椭圆:create_oval 方法 631
13.10.5 画弧线:create_arc 弧形方法 633
13.10.6 画多边形:create_polygon 方法 637
13.10.7 绘制文本:create_text 方法 638
检查点 643
复习题 644
编程练习 646
第14 章 数据库编程 649
14.1 数据库管理系统 649
14.1.1 SQL 650
14.1.2 SQLite 650
检查点 650
14.2 表、行和列 650
14.2.1 列数据类型 651
14.2.2 主键 652
14.2.3 标识列 653
14.2.4 允许空值 653
检查点 654
14.3 使用SQLite 打开和关闭数据库连接 654
14.3.1 指定数据库在磁盘上的位置 656
14.3.2 向DBMS 传递SQL 语句 656
检查点 656
14.4 创建和删除表 657
14.4.1 创建表 657
14.4.2 创建多个表 659
14.4.3 仅在表不存在时创建表 660
14.4.4 删除表 660
检查点 661
14.5 向表中添加数据 661
14.5.1 用一个INSERT 语句插入多行 663
14.5.2 插入NULL 数据 664
14.5.3 插入变量值 664
14.5.4 警惕SQL 注入攻击 666
检查点 667
14.6 使用SQL SELECT 语句查询数据 667
14.6.1 示例数据库 667
14.6.2 SELECT 语句 668
14.6.3 选择表中的所有列 672
14.6.4 使用WHERE 子句指定搜索条件 673
14.6.5 SQL 逻辑操作符:AND,OR 和NOT 676
14.6.6 SELECT 语句中的字符串比较 676
14.6.7 使用LIKE 操作符 677
14.6.8 对SELECT 查询的结果排序 678
14.6.9 聚合函数 679
检查点 682
14.7 更新和删除现有行 682
14.7.1 更新行 682
14.7.2 更新多列 685
14.7.3 确定更新的行数 685
14.7.4 使用DELETE 语句删除行 686
14.7.5 确定删除的行数 688
检查点 688
14.8 深入主键 688
14.8.1 SQLite 中的RowID 列 689
14.8.2 SQLite 中的整数主键 689
14.8.3 非整数主键 690
14.8.4 复合键 690
检查点 691
14.9 处理数据库异常 692
检查点 694
14.10 CRUD 操作 694
14.11 关系数据库 702
14.11.1 外键 704
14.11.2 实体关系图(ERD) 704
14.11.3 用SQL 创建外键 705
14.11.4 在SQLite 中强制外键约束 706
14.11.5 更新关系数据 709
14.11.6 删除关系数据 709
14.11.7 在SELECT 语句中从多个表检索列 710
检查点 716
复习题 717
编程练习 720
附录A 安装Python 723
附录B IDLE 简介 725
附录C ASCII 字符集 729
附录D 预定义颜色名称 731
附录E import 语句 737
附录F 用format() 函数格式化输出 741
附录G 用pip 工具安装模块 747
附录H 知识检查点答案 749
术语详解 767
