编辑推荐
本书具有以下特点:● 广泛使用计算机图形学——本书提供一个简单的图形软件包graphics.py作为示例。● 生动有趣的例子——本书包含了完整的编程示例来解决实际问题。● 亲切自然的行文——以自然的叙事风格介绍了重要的计算机科学概念。● 灵活的螺旋式学习过程——简单地呈现概念,逐渐介绍新的思想,章节末加以巩固强化。● 时机恰好地介绍对象——本书既不是严格的“早讲对象”,也不是“晚讲对象”,而是在命令式编程的基础上简要地介绍了对象概念。● 提供丰富的教学素材——提供了大量的章末习题。还提供代码示例和教学PPT下载。本书以Python语言为工具教授计算机程序设计。本书强调解决问题、设计和编程是计算机科学的核心技能。本书特色鲜明、示例生动有趣、内容易读易学,适合Python入门程序员阅读,也适合高校计算机专业的教师和学生参考。访问异步社区(www.epubit.com.cn)的本书页面,可下载本书示例代码、习题解答和教学PPT。作者简介John Zelle是美国Wartburg大学数学和计算机系教授。他负责教授Python程序设计课程,并且结合多年的教学经验编写了本书,在美国高校受到普遍的欢迎。他还从事VR、AI等方面的研究,发表了一些机器学习方面的论文。
内容简介
《Python程序设计 第3版》是面向大学计算机科学专业的教材。本书以Python语言为工具,采用相当传统的方法,强调解决问题、设计和编程是计算机科学的核心技能。全书共13章,此外,还包含两个附录。第 1章到第5章介绍计算机与程序、编写简单程序、数字计算、对象和图形、字符串处理等基础知识。第6章到第8章介绍函数、判断结构、循环结构和布尔值等话题。第9章到第 13章着重介绍一些较为高档的程序设计方法,包括模拟与设计、类、数据集合、面向对象设计、算法设计与递归等。附录部分给出了Python快速参考和术语表。每一章的末尾配有丰富的练习,包括复习问题、讨论和编程联系等多种形式,帮助读者巩固该章的知识和技能。《Python程序设计 第3版》特色鲜明、示例生动有趣、内容易读易学,适合Python入门程序员阅读,也适合高校计算机专业的教师和学生参考。
作者简介
John Zelle是美国Wartburg大学数学和计算机系教授。他负责教授Python程序设计课程,并且结合多年的教学经验编写了本书,在美国高校受到普遍的欢迎。他还从事VR、AI等方面的研究,发表了一些机器学习方面的论文。
目录
- 第 1章 计算机和程序1
- 学习目标1
- 1.1 通用机器1
- 1.2 程序的力量2
- 1.3 什么是计算机科学2
- 1.4 硬件基础3
- 1.5 编程语言4
- 1.6 Python的“魔法”6
- 1.7 Python程序内部10
- 1.8 混沌与计算机12
- 1.9 小结13
- 1.10 练习14
- 复习问题14
- 第 2章 编写简单程序17
- 学习目标17
- 2.1 软件开发过程17
- 2.2 示例程序:温度转换器18
- 2.3 程序要素19
- 2.3.1 名称19
- 2.3.2 表达式20
- 2.4 输出语句22
- 2.5 赋值语句23
- 2.5.1 简单赋值23
- 2.5.2 赋值输入24
- 2.5.3 同时赋值26
- 2.6 确定循环27
- 2.7 示例程序:终值29
- 2.8 小结31
- 2.9 练习32
- 复习问题32
- 第3章 数字计算35
- 学习目标35
- 3.1 数值数据类型35
- 3.2 类型转换和舍入38
- 3.3 使用math库40
- 3.4 累积结果:阶乘42
- 3.5 计算机算术的局限性44
- 3.6 小结46
- 3.7 练习47
- 复习问题47
- 第4章 对象和图形52
- 学习目标52
- 4.1 概述52
- 4.2 对象的目标53
- 4.3 简单图形编程53
- 4.4 使用图形对象56
- 4.5 绘制终值60
- 4.6 选择坐标64
- 4.7 交互式图形66
- 4.7.1 获取鼠标点击67
- 4.7.2 处理文本输入68
- 4.8 graphics模块参考70
- 4.8.1 GraphWin对象70
- 4.8.2 图形对象71
- 4.8.3 Entry对象74
- 4.8.4 显示图像74
- 4.8.5 生成颜色75
- 4.8.6 控制显示更新(高档)75
- 4.9 小结76
- 4.10 练习76
- 复习问题76
- 第5章 序列:字符串、列表和文件81
- 学习目标81
- 5.1 字符串数据类型81
- 5.2 简单字符串处理84
- 5.3 列表作为序列86
- 5.4 字符串表示和消息编码87
- 5.4.1 字符串表示87
- 5.4.2 编写编码器88
- 5.5 字符串方法89
- 5.5.1 编写解码器89
- 5.5.2 更多字符串方法92
- 5.6 列表也有方法93
- 5.7 从编码到加密94
- 5.8 输入/输出作为字符串操作95
- 5.8.1 示例应用程序:
- 日期转换95
- 5.8.2 字符串格式化97
- 5.8.3 更好的零钱计数器99
- 5.9 文件处理99
- 5.9.1 多行字符串100
- 5.9.2 文件处理100
- 5.9.3 示例程序:批处理
- 用户名103
- 5.9.4 文件对话框(可选)103
- 5.10 小结105
- 5.11 练习106
- 复习问题106
- 第6章 定义函数111
- 学习目标111
- 6.1 函数的功能111
- 6.2 函数的非正式讨论112
- 6.3 带有函数的终值程序115
- 6.4 函数和参数:令人兴奋的
- 细节116
- 6.5 返回值的函数119
- 6.6 修改参数的函数122
- 6.7 函数和程序结构126
- 6.8 小结128
- 6.9 练习129
- 复习问题129
- 第7章 判断结构133
- 学习目标133
- 7.1 简单判断133
- 7.1.1 示例:温度警告133
- 7.1.2 形成简单条件135
- 7.1.3 示例:条件程序执行136
- 7.2 两路判断137
- 7.3 多路判断140
- 7.4 异常处理142
- 7.5 设计研究:三者大144
- 7.5.1 策略1:比较每个值和
- 所有其他值145
- 7.5.2 策略2:判断树146
- 7.5.3 策略3:顺序处理147
- 7.5.4 策略4:使用Python148
- 7.5.5 一些经验148
- 7.6 小结149
- 7.7 练习149
- 复习问题149
- 第8章 循环结构和布尔值153
- 学习目标153
- 8.1 for循环:快速回顾153
- 8.2 不定循环154
- 8.3 常见循环模式155
- 8.3.1 交互式循环155
- 8.3.2 哨兵循环156
- 8.3.3 文件循环158
- 8.3.4 嵌套循环160
- 8.4 布尔值计算161
- 8.4.1 布尔运算符161
- 8.4.2 布尔代数163
- 8.5 其他常见结构165
- 8.5.1 后测试循环165
- 8.5.2 循环加一半166
- 8.5.3 布尔表达式作为判断166
- 8.6 示例:一个简单的事件循环169
- 8.7 小结172
- 8.8 练习173
- 复习问题173
- 第9章 模拟与设计177
- 学习目标177
- 9.1 模拟短柄壁球177
- 9.1.1 一个模拟问题177
- 9.1.2 分析与规格说明178
- 9.2 伪随机数178
- 9.3 自顶向下的设计180
- 9.3.1 顶层设计180
- 9.3.2 关注点分离182
- 9.3.3 第 二层设计182
- 9.3.4 设计simNGames183
- 9.3.5 第三层设计184
- 9.3.6 整理完成186
- 9.3.7 设计过程总结188
- 9.4 自底向上的实现188
- 9.4.1 单元测试188
- 9.4.2 模拟结果189
- 9.5 其他设计技术190
- 9.5.1 原型与螺旋式开发190
- 9.5.2 设计的艺术191
- 9.6 小结191
- 9.7 练习192
- 复习问题192
- 第 10章 定义类196
- 学习目标196
- 10.1 对象的快速复习196
- 10.2 示例程序:炮弹197
- 10.2.1 程序规格说明197
- 10.2.2 设计程序197
- 10.2.3 程序模块化199
- 10.3 定义新类200
- 10.3.1 示例:多面骰子201
- 10.3.2 示例:Projectile类203
- 10.4 用类数据处理205
- 10.5 对象和封装207
- 10.5.1 封装有用的抽象207
- 10.5.2 将类放在模块中208
- 10.5.3 模块文档208
- 10.5.4 使用多个模块210
- 10.6 控件210
- 10.6.1 示例程序:掷骰
- 子程序211
- 10.6.2 创建按钮211
- 10.6.3 构建骰子类213
- 10.6.4 主程序215
- 10.7 动画炮弹216
- 10.7.1 绘制动画窗口217
- 10.7.2 创建ShotTracker218
- 10.7.3 创建输入对话框219
- 10.7.4 主事件循环220
- 10.8 小结221
- 10.9 练习222
- 复习问题222
- 第 11章 数据集合227
- 学习目标227
- 11.1 示例问题:简单统计227
- 11.2 应用列表228
- 11.2.1 列表和数组229
- 11.2.2 列表操作229
- 11.2.3 用列表进行统计231
- 11.3 记录的列表235
- 11.4 用列表和类设计237
- 11.5 案例分析:Python计算器241
- 11.5.1 计算器作为对象241
- 11.5.2 构建界面241
- 11.5.3 处理按钮243
- 11.6 案例研究:更好的炮弹动画246
- 11.6.1 创建发射器246
- 11.6.2 追踪多次射击248
- 11.7 无顺序集合251
- 11.7.1 字典基础251
- 11.7.2 字典操作252
- 11.7.3 示例程序:词频253
- 11.8 小结257
- 11.9 练习257
- 复习问题257
- 第 12章 面向对象设计262
- 学习目标262
- 12.1 OOD的过程262
- 12.2 案例研究:壁球模拟263
- 12.2.1 候选对象和方法264
- 12.2.2 实现SimStats265
- 12.2.3 实现RBallGame266
- 12.2.4 实现Player267
- 12.2.5 完整程序268
- 12.3 案例研究:骰子扑克270
- 12.3.1 程序规格说明271
- 12.3.2 识别候选对象271
- 12.3.3 实现模型272
- 12.3.4 基于文本的UI275
- 12.3.5 开发GUI277
- 12.4 OO概念282
- 12.4.1 封装282
- 12.4.2 多态283
- 12.4.3 继承283
- 12.5 小结284
- 12.6 练习285
- 复习问题285
- 第 13章 算法设计与递归287
- 学习目标287
- 13.1 查找287
- 13.1.1 简单的查找问题287
- 13.1.2 策略1:线性查找288
- 13.1.3 策略2:二分查找288
- 13.1.4 比较算法289
- 13.2 递归问题解决290
- 13.2.1 递归定义291
- 13.2.2 递归函数292
- 13.2.3 示例:字符串反转293
- 13.2.4 示例:重组词294
- 13.2.5 示例:快速指数295
- 13.2.6 示例:二分查找296
- 13.2.7 递归与迭代296
- 13.3 排序算法298
- 13.3.1 天真的排序:选择
- 排序298
- 13.3.2 分而治之:归并排序299
- 13.3.3 排序比较301
- 13.4 难题303
- 13.4.1 汉诺依塔303
- 13.4.2 停机问题306
- 13.4.3 结论308
- 13.5 小结308
- 13.6 练习309
- 复习问题309
- 附录A Python快速参考314
- 附录B 术语表323