欢迎光临
免费的PDF电子书下载网站

Python程序设计与算法思维 PDF下载

编辑推荐

暂无

内容简介

本书作者在构建Python程序的过程中,将经过证明的、做过类测试的、回归基本的策略首次引入到Python程序设计教学中。本书以聚焦问题解决的分层渐进方法介绍了编程的基本原理,并在各个章节增加了新的语法和概念,以及展示了好的编程风格应该是什么样的,分阶段开发了一个复杂的程序。本书关注的是问题的解决,强调算法思维。

作者简介

暂无

Python程序设计与算法思维 PDF下载

目录

出版者的话
译者序
前言
第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

前沿

Python编程语言近年来已经变得非常受欢迎。能够快速学习Python简单直观的语法让人印象深刻,也让许多用户创建了流行的程序库。Python由Guido van Rossum设计,Python社区称他为“仁慈的独裁者”(BDFL)。他说选择Python这个名字“略带随意性”,同时也因为他是“《Monty Python飞行马戏团》(一部英国喜剧片)的忠实粉丝”。谁不想学习以一个喜剧演员团体名称命名的编程语言呢?
本书旨在用于计算机科学的第一门课程。我们对亚利桑那大学的数百名本科生进行了课堂测试,其中大多数不是计算机科学专业的学生。本教材采用了与我们之前编写的《Java程序设计教程(第4版)》相同的风格。Java教材在我们的课堂测试中被证明是有效的,该测试覆盖自2007年以来在华盛顿大学学习的数千名学生。
计算机科学导论课程在许多大学有着悠久的历史,都是通过率很低的“杀手”课程。但正如道格拉斯·亚当斯在《银河系漫游指南》中所说的那样:“不要惊慌失措。”学生如果递进式学习,就可以掌握这门课程。
Python拥有很多特性,这使其成为用于第一门计算机科学课程的有吸引力的语言。它具有简单、简洁但功能强大的语法,使得学习轻松愉快,并且非常适用于编写许多常用的程序。学生可以只用一行代码来编写自己的第一个Python程序,而不像Java或C++这样的大多数语言需要编写若干行。Python包含内置的解释器和“读取-求值-输出”循环(REPL,交互式解释器),用于快速运行和测试代码,鼓励学生测试和探索语言。Python还提供了丰富的库,学生可以将它们用于图形、动画、数学、科学计算、游戏等。本书基于撰写时最新的语言版本Python 3,覆盖了该语言版本的现代特性和习惯用法。
本书基于“回归基础”的方法,侧重于过程式编程和程序分解。这也被称为“对象在后”方法,而不是某些学校采用的“对象先行”方法。根据我们多年的经验,许多科学家、工程师等都可以学习过程式编程。一旦我们建立了面向过程的坚实技术基础,就转向面向对象的编程。在本书的最后,学生将学习这两种编程风格。
以下是我们的方法和材料的主要特点:
专注于解决问题。许多教科书在介绍新构造时都会关注语言细节,我们则专注于解决问题。每个构造可以解决哪些新问题?新手可能遇到哪些陷阱?使用新构造的常见方法是什么?
强调算法思维。过程式方法允许我们强调算法问题的解决:将大问题分解为更小的问题,使用伪代码来细化算法,并解决用算法表示大型程序的困难。
彻底讨论主题。我们发现许多介绍性教材快速涵盖了新的语法和概念,然后就迅速进入下一个主题。我们觉得打开教科书的学生正是那种想要更彻底、更细致地解释和讨论棘手问题的学生。在本教材中,我们倾向于使用更长的解释,其中包含比其他教材更多的说明、图表和代码示例。
分层方法。编程涉及许多难以一次学到的概念。教新手编写代码就像试图建造一个纸牌屋:每张新牌都必须小心放置。如果太匆忙而试图同时放置太多纸牌,整个结构就会崩溃。我们逐层教授新概念,让学生逐步加深对概念的理解。
强调良好的编码风格。我们展示了使用正确和一致的编程风格,以及设计的代码。书中显示的所有完整程序都已经过全面注释和正确分解。在整本书中,我们讨论了习惯用法,好的和坏的编程风格,以及如何选择优雅和适当的方法来分解和解决问题。
精心挑选的语言子集。我们不是试图向学生展示每一种语言结构和特性,而是解释和使用我们认为最适合解决入门级问题的Python语言的核心子集。
案例研究。我们通过一个典型的案例研究结束大多数章节,向学生展示如何分阶段开发复杂程序以及如何在开发过程中对其进行测试。这种结构允许我们在丰富的上下文中演示每个新的编程结构,这是无法通过短代码示例来实现的。
层次和依赖关系
许多介绍性的计算机科学教材都是面向语言的,但本书前几章的方法是分层的。例如,Python有许多控制结构(包括循环和if/else语句),许多教材在一章中包含所有控制结构。虽然这对于已经知道如何编程的人来说可能有意义,但对于正在学习如何编程的新手而言,这可能带来压力。我们发现将这些控制结构分散到不同的章节来讲解更加有效,这样,学生可以一次学习一个结构,而不是一次性学习全部结构。
下表显示了前七章中的分层方法:
第1~7章的分层
章节控制流数据技术输入/输出
1函数字符串字面量分解print
2确定循环(for循环)表达式/变量,整数,实数局部变量,全局常量,伪代码
3参数,返回使用对象使用参数/返回值进行分解控制台输入,图形
4条件(if/else)字符串前置/后置条件,抛出异常
5不确定循环(while 循环)布尔逻辑断言,健壮的程序
6文件对象基于行的处理,基于标记的处理文件I/O
7列表遍历文件作为列表

第1~5章是按顺序进行设计的,然后从第6章开始具有更大的学习灵活性。尽管第7章(列表)中的案例研究涉及从文件中读取,而第6章介绍了该主题,但仍旧可以跳过第6章。
下图显示了各章的依赖关系。强依赖关系绘制为实箭头。我们建议学习时不要覆盖强依赖顺序之外的章节。弱依赖关系绘制为虚箭头。弱依赖关系表示后一章简要提到了前一章中的主题,但是如果必要的话,仍然可以阅读和探索这一章而不必考虑前面的章节。

以下是各章之间弱依赖关系的更详细解释:
第7章中的一些示例,以及第8章中关于字典和集合的一些示例,会从文件中读取数据。文件输入/输出在第6章中介绍。但是,为了讨论列表或其他数据集合,不需要进行整体文件读取,因此如果需要,可以跳过第6章。
第11章中关于类和对象的一些示例提到了引用语义的概念,它在第7章中介绍。但是在第11章中重新解释了引用的概念,因此如果需要,可以在学习列表之前先学习类。
第9章中的一些递归函数会处理列表,并且一个递归函数会以递归方式反转文件的所有行。因此第9章在一定程度上依赖于第7章。但是,第9章中的几乎所有递归函数都可以只使用第1~5章的核心内容来编写和理解。
从图中可以看出,第7章可能是前五章之后最重要的章节,其内容被许多其他章节使用。常见的章节交换顺序是先学习第1~5章,然后学习第7章,再返回第6章学习关于文件的额外知识。
补充材料
所有自测题的答案都在本书配套网站http://www.buildingpythonprograms.com/中提供。
此外,配套网站还为学生提供了以下额外资源:
在线的补充内容。
所有案例研究的源代码和数据文件以及其他完整的程序示例。
第3章中使用的DrawingPanel类。
链接到基于Web的编程练习工具。
教师可以访问以下资源:
适用于讲课的PowerPoint幻灯片。
习题和编程项目的解决方案,以及许多项目的家庭作业规范文档。
考试题和解决方案的关键点。
要访问教师资源,请发送电子邮件至authors@buildingpythonprograms.com与我们联系。有关资源的其他问题,请联系作者或Pearson代表。
致谢
感谢Pearson的工作人员,他们帮助制作了这本书。Rose Kernan管理该项目,是我们在图书制作过程中的主要联系人。Rose做了非凡的工作,她在这个过程中始终勤奋、积极、乐于助人。Amanda Brands是内容制作人,她在此过程中提供了出色的支持。感谢Martha McMaster对本教材进行校对,感谢Shelly Gerger-Knechtl进行文案编辑和索引编制。感谢营销经理Yvonne Vannatta和编辑助理Meghan Jacoby。还要感谢Pearson的艺术和合成团队,他们对本书进行了排版。
感谢Pearson的主编Matt Goldstein。十多年前,Matt就认可了我们的工作,并与我们合作出版了《Java程序设计教程》第1版。Matt一直是一个坚定的支持者,我们总是很乐意与他合作。
最后但同样重要的是,我们要感谢亚利桑那大学的CSC 110学生,他们对本书的草稿进行了课堂测试,提供了有用的建议,并改正了草稿中的错误。

Stuart Reges,华盛顿大学
Marty Stepp,斯坦福大学
Allison Obourn,亚利桑那大学

Python程序设计与算法思维 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Python程序设计与算法思维