国外著名高等院校信息科学与技术优秀教材 Python计算与编程实践 多媒体方法 第4版
作者:[美] 马克 古茨戴尔 著,王海鹏,孙朝军 译
出版时间:2020年版
内容简介
本书是一本独特的Python 程序设计教程,使用媒体计算的方法教授Python 编程。全书共17 章(分为4 个部分)和1 个附录。第1 部分是前6 章,介绍了计算机科学、媒体计算、编程的概念,以及操作文本、图片、修改像素等编程技巧。第2 部分是第7 章到第10 章,主要介绍用Python 概念对声音媒体进行各种操作。第3 部分是第11 章到第13章,主要介绍针对文本、网络、数据库的Python 编程,还介绍了函数式编程、递归的思想和应用。第4 部分是第14 到第17 章,主要介绍视频文件的编程操作,还介绍了面向对象编程的思想和方法。附录部分给出了Python 语言的快速参考。本书通过媒体计算的方法,帮助读者轻松地学习和掌握计算机科学思想和编程方法,适合作为高等院校计算机专业Python 程序设计、多媒体编程等课程的教材,也适合对Python编程感兴趣的读者自学参考。
目录
第 1 部分 引言
第 1 章 计算机科学与媒体计算概述2
1.1 什么是计算机科学.2
1.2 编程语言.5
1.3 计算机理解的东西.7
1.4 媒体计算:为什么要
数字化媒体.9
1.5 每个人的计算机科学.10
1.5.1 它与沟通有关10
1.5.2 它与过程有关11
1.5.3 你可能需要它11
问题 .11
深入学习13
第 2 章 编程简介14
2.1 编程是关于命名的.14
文件及其名称15
2.2 Python 中的编程.16
2.3 JES 中的编程17
2.4 JES 中的媒体计算18
2.4.1 显示图片22
2.4.2 播放声音24
2.4.3 为值命名25
2.5 制作一个程序.27
函数:真正像数学的
函数接受输入30
编程小结32
问题 .32
深入学习36
第3 章 创建和修改文本37
3.1 字符串:在计算机中制作
人类文本.37
从字符串制作字符串:
讲故事39
3.2 用for 来拆分字符串41
3.2.1 测试这些字母. 43
3.2.2 拆分字符串,合并
字符串. 45
3.2.3 用索引拆分字符串 48
3.2.4 使用索引实现镜像、
反转和分离字符串. 50
3.2.5 使用关键字密码对字符串
进行编码和解码. 52
3.3 按单词拆分字符串 53
3.4 字符串内部是什么 55
3.5 计算机能做什么 56
编程小结. 57
程序片段. 57
字符串程序片段. 57
问题 57
深入学习. 61
第4 章 使用循环修改图片. 62
4.1 如何编码图片 62
4.2 操作图片 66
浏览图片. 70
4.3 更改颜色值 71
4.3.1 在图片中使用循环 71
4.3.2 增加/减少红色(绿色、
蓝色). 73
4.3.3 测试程序:这真的
有效吗. 77
4.3.4 一次更改一种颜色 77
4.4 创造日落 78
理解函数. 78
4.5 变亮和变暗 83
4.6 创造负片 84
4.7 转换为灰度图 85
4.8 用索引指定像素 86
编程小结. 89
图片程序片段. 89
像素程序片段90
颜色程序片段90
问题 .90
深入学习93
第5 章 使用选择的图片技术94
5.1 替换颜色:红眼、棕褐色调,
海报化.94
5.1.1 减少红眼97
5.1.2 棕褐色调和海报化图片:
使用条件选择颜色99
5.2 比较像素:边缘检测103
5.3 背景消除.105
5.4 抠像.108
5.5 在范围内着色. 111
5.5.1 添加边框 111
5.5.2 加亮图片的右半部分112
5.6 选择无需再次测试.113
编程小结115
问题 .115
深入学习117
第6 章 按位置修改像素118
6.1 更快地处理像素.118
6.1.1 用range 在像素上
循环.119
6.1.2 编写更快的像素循环121
6.2 镜像图片.122
6.3 复制和转换图片.128
6.3.1 复制129
6.3.2 复制到较小的图片和
修改.133
6.3.3 复制和引用135
6.3.4 创建拼贴图136
6.3.5 通用复制139
6.3.6 旋转140
6.3.7 缩放142
6.4 组合像素:模糊.146
6.5 混合图片.148
6.6 绘制图像.150
6.6.1 使用绘图命令绘图151
6.6.2 矢量和位图表示 152
6.7 程序作为指定绘图的过程. 154
我们为什么要编写程序 155
编程小结. 156
问题 156
深入学习. 161
第 2 部分 声音
第7 章 用循环修改声音. 164
7.1 声音如何编码 164
7.1.1 声音的物理学. 164
7.1.2 研究不同的声音 166
7.1.3 编码声音. 169
7.1.4 二进制数和
二进制补码. 170
7.1.5 存储数字化的声音 171
7.2 操作声音 172
7.2.1 打开声音和操作
样本集. 172
7.2.2 使用JES MediaTools 175
7.2.3 循环. 176
7.3 改变声音的音量 177
7.3.1 增加音量. 177
7.3.2 真的有效吗. 178
7.3.3 减小音量. 181
7.3.4 使用数组索引表示法 182
7.3.5 在声音中理解函数 182
7.4 规格化声音 183
产生削波. 184
编程小结. 185
声音文件函数和片段. 186
声音对象函数和片段. 186
面向样本的函数和片段 186
问题 186
深入学习. 188
第8 章 修改范围中的样本. 189
8.1 对声音的不同部分进行
不同操作 189
复习索引数组表示法. 190
8.2 拼接声音.192
8.3 通用剪辑和复制.197
8.4 反转声音.199
8.5 镜像.200
8.6 关于函数和作用域.201
编程小结203
问题 .203
深入学习204
第9 章 通过组合片段制作声音205
9.1 通过叠加合成声音.205
9.2 混合声音.206
9.3 创建回声.207
9.3.1 创建多个回声208
9.3.2 创建和弦209
9.4 采样键盘的工作原理.209
采样作为算法213
9.5 叠加式合成.213
9.5.1 制作正弦波213
9.5.2 叠加正弦波215
9.5.3 检查结果215
9.5.4 方波216
9.5.5 三角波218
9.6 现代音乐合成.219
9.6.1 MP3 220
9.6.2 MIDI.220
编程小结221
问题 .221
深入学习223
第 10 章 构建更大的程序224
10.1 自顶向下设计程序.225
10.1.1 自顶向下的设计
实例.225
10.1.2 设计顶层函数226
10.1.3 编写子函数228
10.2 自底向上设计程序.231
自底向上过程的示例232
10.3 测试程序.232
测试边界条件234
10.4 关于调试的提示.234
10.4.1 寻找要担心的语句 235
10.4.2 查看变量. 235
10.4.3 调试冒险游戏 237
10.5 算法和设计 240
10.6 连接到函数外的数据. 240
10.7 在JES 之外运行程序 243
编程小结. 245
问题 246
深入学习. 248
第3 部分 文本、文件、网络、
数据库和统一媒体
第 11 章 使用方法操作文本和文件. 250
11.1 作为统一媒体的文本. 250
11.2 操作部分字符串. 250
11.2.1 字符串方法:介绍
对象和点表示法. 251
11.2.2 列表:强大的结构化
文本. 253
11.2.3 字符串没有字体 255
11.3 文件:放置字符串和其他
东西的地方 255
11.3.1 打开和操作文件 257
11.3.2 生成套用信函 258
11.3.3 从因特网读取和
操作数据. 259
11.3.4 从网页上抓取信息 261
11.3.5 读取CSV 数据 262
11.3.6 编写程序 263
11.4 Python 标准库 264
11.4.1 再谈导入和你自己的
模块. 265
11.4.2 用随机数为程序添加
不可预测性. 266
11.4.3 利用库读取CSV
文件. 267
11.4.4 Python 标准库的
例子. 268
编程小结. 268
通用程序片段268
字符串函数、函数、
方法和片段.269
列表函数和片段269
问题 .269
深入学习271
第 12 章 高级文本技巧:Web 和信息.272
12.1 网络:从网上获取文本.272
12.1.1 自动访问CSV 数据275
12.1.2 访问FTP 276
12.2 使用文本在媒体之间转换.276
12.3 在媒体之间移动信息.279
12.4 使用列表作为媒体表示的
结构文本.281
12.5 在图片中隐藏信息.282
将声音隐藏图片内284
编程小结285
通用程序片段285
问题 .286
深入学习287
第 13 章 为Web 创建文本288
13.1 HTML:网页的表示法288
13.2 编写程序生成HTML.291
制作主页293
13.3 数据库:存储文本的地方.296
13.3.1 关系数据库298
13.3.2 使用散列表的示例
关系数据库298
13.3.3 使用SQL .301
13.3.4 用数据库构建网页303
问题 .304
深入学习306
第4 部分 影片
第 14 章 创建和修改影片308
14.1 生成动画.309
14.2 使用视频源.316
视频操作示例316
14.3 自底向上建立视频效果.319
问题 323
第 15 章 速度. 326
15.1 关注计算机科学 326
15.2 什么使程序更快 326
15.2.1 计算机真正理解的
是什么. 326
15.2.2 编译器和解释器 327
15.2.3 什么限制了计算机的
速度. 331
15.2.4 它真不一样吗 333
15.2.5 让搜索更快. 334
15.2.6 永远不会完成或
无法编写的算法. 336
15.2.7 为什么Photoshop 比
JES 更快 337
15.3 什么使计算机更快 337
15.3.1 时钟频率和实际计算. 338
15.3.2 存储:什么使计算机
变慢. 339
15.3.3 显示. 340
问题 340
深入学习. 341
第 16 章 函数式编程. 342
16.1 使用函数让编程更容易. 342
16.2 使用映射和归约的函
数式编程 345
16.3 针对媒体的函数式编程. 348
不改变状态的媒体操作 349
16.4 递归:强大的思想 350
16.4.1 递归目录遍历 354
16.4.2 递归的媒体函数 356
编程小结. 357
函数式编程. 357
问题 358
第 17 章 面向对象编程. 360
17.1 对象的历史 360
17.2 使用海龟 361
17.2.1 类和对象. 361
17.2.2 向对象发送消息 362
17.2.3 对象控制其状态364
17.3 教海龟新技巧.365
17.3.1 覆盖原有的海龟方法.367
17.3.2 一次使用多只海龟368
17.3.3 带有图片的海龟369
17.3.4 跳舞的海龟371
17.3.5 递归和海龟372
17.4 面向对象的幻灯片放映.373
使Slide 类更加面向对象376
17.5 面向对象的媒体.376
17.6 盒子乔.380
17.7 为什么要对象.381
编程小结382
面向对象编程383
图形方法383
Turtle 和World 的方法.383
问题 .384
深入学习. 386
附录A Python 快速参考 387
A.1 变量. 387
A.2 函数创建. 387
A.3 循环和条件 387
A.4 运算符和表示函数 388
A.5 数字函数. 389
A.6 序列操作. 389
A.7 字符串转义 389
A.8 有用的字符串方法 389
A.9 文件. 390
A.10 列表. 390
A.11 字典、散列表或关联数组 390
A.12 外部模块 390
A.13 类. 391
A.14 函数式方法 391
参考资料. 392