一本值得了解的书《 Python编程导论(第2版)》
以后我会经常分享一本书。我分享的书,你看完如果对你有帮助,值得你购买,请到官网购买正版书籍。
声明:我不是买书的,我是搞Python技术的,文章最后免费为你准备了一些Python资料。
本书基于MIT 编程思维培训讲义写成,主要目标在于帮助读者掌握并熟练使用各种计算技术,具备用计算思维解决现实问题的能力。书中以Python 3 为例,介绍了对中等规模程序的系统性组织、编写、调试,帮助读者深入理解计算复杂度,还讲解了有用的算法和问题简化技术,并探讨各类计算工具的使用。与本书第1版相比,第2版全面改写了后半部分,且书中所有示例代码都从Python 2 换成了Python 3。
本书适合对编程知之甚少但想要使用计算方法解决问题的读者
本书特色
掌握多种不同的思维方式是每个人大学时代的必修课。具备使用计算思维解决问题的能力是程序员入门的基本技能。本书基于作者开授的MIT热门MOOC教程编写,旨在培养读者的计算思维,为其日后的IT生涯打下坚实的编程基础。
- 以Python 3为示例,涵盖Python大部分特性,重在介绍编程语言可以做什么
- 如何系统性地组织、编写、调试中等规模的程序
- 理解计算复杂度
- 将模糊的问题描述转化为明确的计算方法,以此解决问题,并深刻理解整个过程
- 掌握有用的算法以及问题简化技术
- 使用随机性和模拟技术清晰阐述很难得到封闭解的问题
- 使用计算工具(包括简单的统计、可视化以及机器学习工具)对数据进行理解与建模
作者介绍
John V. Guttag
1999年~2004年任MIT电气工程与计算机科学系主任,所授计算机科学系列导论课程深受学生欢迎。目前为计算机科学与人工智能实验室网络及移动系统组联合负责人,还进行软件工程、机器定理证明、硬件验证等领域的研究以及培训工作。获美国布朗大学英语专业学士学位、应用数学硕士学位,多伦多大学计算机科学博士学位。
目录
前言
本书基于MIT的一门课程写成,这门课程始于2006年,自2012年起,成为edX和MITx上的一门“大规模在线开放课程”(Massive Online Open Courses,MOOC)。本书第1版基于一个学期的课程,但随着时间的推移,我不得不添加更多内容,再用一学期来讲述课程已经不合适了。现在的这个版本适合于两学期的计算机科学系列导论课程。
当我开始编写第2版时,本以为只要加上几章内容就可以了,但结果远超预料。我重新组织了本书的后半部分,并将整本书中的代码从Python 2换成了Python 3。
本书面向的是那些没有或只有很少编程经验,但希望掌握计算方法来解决问题的学生。书中的内容是一些学生学习更高级计算机科学课程的跳板,但对更多学生来说,则是正式学习计算机科学的一门课程。
正因如此,所以我们更强调课程的广度,而不是深度。课程的目标是为学生简述更多的主题,使他们在想用计算机完成目标时知道自己能做什么。尽管如此,这并不是一门“计算机鉴赏”课程,要求比较严格,而且有一定难度。读者需要花费大量时间和精力才能真正掌握书中内容,使计算机服从自己的调遣。
本书的主要目标是帮助学生掌握并熟练使用各种计算技术,以得到有价值的成果。他们应该学会使用计算思维表述问题,并掌握如何从数据中提取信息。学生从本书中获得的最重要的能力是,使用计算思维解决问题的艺术。
这本书很难纳入传统的计算机科学课程。第1~11章是典型的针对没有或只有很少编程经验的学生的计算机科学课程;第12~14章稍微高级一些,如果想学习进阶技术,可以从这几章挑选些内容,作为导论课程的补充;第15~24章介绍如何使用计算技术来理解数据,我们认为其中的内容应该成为计算机科学课程体系中的第二门课程(代替传统的数据结构课程)。
第1~11章主要包含五个方面的内容:
- 编程基础
- Python 3编程语言
- 计算问题的解决技术
- 计算复杂度
- 使用图形表示信息
我们会介绍Python语言的大部分特性,但重点在于可以使用编程语言做什么,而不是语言本身。比如,第3章结束时虽然只介绍了Python语言的一小部分,但已经引入穷举的概念、猜测与验证算法、二分查找和高效近似算法。纵贯本书,我们都会介绍Python的特性。同样地,本书从头至尾也会介绍编程方法。我们的理念是帮助学生们掌握Python,并成为一个优秀的程序员,能够使用计算技术解决自己感兴趣的问题。
书中示例都使用Python 3.5进行了测试。Python 3修正了Python 2各种发布版本(通常称为Python 2.x)在设计上的很多不一致性,但它不是向后兼容的,这意味着大多数使用Python 2编写的程序不能在Python 3中正常运行。因为这个原因,Python 2.x还在被广泛使用。第一次使用Python 3中不同于Python 2的特性时,我们都会明确指出如何在Python 2中完成相同功能。书中所有示例都有Python 3.5和Python 2.7的在线版本。
第12~13章介绍了优化,这是一个虽然重要但很少包含在导论课程中的主题。第14~16章介绍了随机规划,这也是一个虽然重要但很少包含在导论课程中的主题。我们在MIT授课的经验是,在一个学期的导论课程中,或者可以讲述第12~13章的内容,或者可以讲述第14~16章的内容,但不能二者兼顾。
第15~24章在设计上是独立成篇的,内容涉及如何使用计算技术来理解数据。其中使用的数学知识不超出高中代数的范围,但要求读者具有严谨的思维能力,且不会被数学概念吓倒。这一部分包括多数导论课程中没有的内容:数据可视化、模拟模型、概率与统计思维,以及机器学习。我们相信对大多数学生来说,这部分内容远比那些典型的第二门计算机科学课程的内容更有意义。
我们没有在每章末尾设置习题,而是在每章的适当部分插入了“实际练习”。有些练习非常简短,目的是使读者确认自己确实明白了刚刚学过的内容。有些练习增加了一点挑战性,适合在考试时使用。其余练习的难度比较大,可以作为课后作业。
本书有三个普适性主题:系统的问题解决方式、抽象能力,以及将计算思维作为思考世界的一种方式。学完本书后,你应该:
- 学会使用Python语言进行编程和计算;
- 学会系统性地组织、编写、调试中等规模的程序;
- 理解计算复杂度;
- 将模糊的问题描述转化为明确的计算方法,以此解决问题,并对这个过程有深刻的理解;
- 掌握一些有用的算法以及问题简化技术;
- 对于那些很难得到封闭解的问题,知道如何使用随机性和模拟技术进行清晰阐述;
- 学会使用计算工具(包括简单的统计、可视化以及机器学习工具)对数据进行理解与建模。
编程本身就是一项非常困难的活动。正如那句名言所说:“在几何中,没有专为国王铺设的大道。”1对于编程来说,也没有捷径可走。如果你想真正掌握书中的内容,光阅读是不够的,还应该亲自运行书中的代码。2008年以来,本书基于的各种课程都放在MIT的开放课程网站(OpenCourseWare,OCW)上。这里有授课过程的视频录像,以及一系列习题和考题。从2012年秋季开始,我们在edX和MITx上提供了在线课程,其中包括本书的大部分内容。我们强烈推荐你做做OCW和edX上提供的习题。
1据传,公元前300年左右,托勒密国王希望有学习数学的捷径。对于这个要求,欧几里得给出了这样的回答。
第 1 章 启程阅读 第 2 章 Python简介第 3 章 一些简单的数值程序第 4 章 函数、作用域与抽象第 5 章 结构化类型、可变性与高阶函数第 6 章 测试与调试第 7 章 异常与断言第 8 章 类与面向对象编程第 9 章 算法复杂度简介第 10 章 一些简单算法和数据结构第 11 章 绘图以及类的进一步扩展第 12 章 背包与图的最优化问题第 13 章 动态规划第 14 章 随机游走与数据可视化第 15 章 随机程序、概率与分布第 16 章 蒙特卡罗模拟第 17 章 抽样与置信区间第 18 章 理解实验数据第 19 章 随机试验与假设检验第 20 章 条件概率与贝叶斯统计第 21 章 谎言、该死的谎言与统计学第 22 章 机器学习简介第 23 章 聚类第 24 章 分类方法Python 3.5速查表
写在最后
前几天有私信我要Python的学习资料,我连夜整理了一些有深度的Python教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Python的同学可以免费下载学习学习。文件下载方式:点击我的头像,关注后私信回复“资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。“编程是门手艺活”。什么意思?得练啊。