基本信息
- 原书名:The Practice of Computing Using Python
- 原出版社: Addison Wesley; 1 edition
- 作者: (美)William F PunchRichard Enbody
- 译者: 张敏
- 丛书名: 华章程序员书库
- 出版社:机械工业出版社
- ISBN:9787111394136
- 上架时间:2012-8-30
- 出版日期:2012 年8月
- 开本:16开
- 页码:452
- 版次:1-1
- 所属分类:计算机 > 软件与程序设计 > Python
教材

【插图】

编辑推荐
美国密歇根州立大学富有30余年计算机教学与实践经验的专家亲自执笔,被美国多所知名高校采用为计算机课程入门教材,广受好评
从计算机科学的角度全面讲解Python的理论知识和编程方法,包含大量来源于实际生活的与数据处理相关的实战案例,是系统学习Python编程的经典著作
内容简介
计算机书籍
《Python入门经典:以解决计算问题为导向的Python编程实践》是一本系统而科学的Python入门教程,美国密歇根州立大学等多所美国知名高校采用其作为编程语言的入门教材,被奉为经典。它不仅从计算机教学和计算机科学的角度讲解了初学者如何才能更有效地去学习Python,而且特别强调用Python解决生活中的实际问题,精心组织了大量来源于生活中不同领域的与数值计算和数据处理相关的案例。通过本书,读者不仅能系统掌握Python编程相关的知识,而且还能掌握利用Python处理各种与数据相关的问题。本书分为五部分,第一部分介绍计算机设备的一般概念和一些计算机术语;第二部分开始介绍编程的基本知识,包括入门知识和控制语句,为后续内容做铺垫;第三部分讲述数据结构和函数,包括字符串、列表和元组、字典和集合、文件、函数、算法和程序等进阶内容,有助于读者提升编程技能;第四部分重点介绍如何使用类定义数据结构和算法、开发程序等,培养读者运用Python语言来实现基本的计算思想和策略的能力;第五部分主要介绍异常、测试和递归,旨在使读者成为更好的程序员。本书深入浅出,每一章节均给出了大量的实例、示范代码和自测练习,便于读者理解和掌握相关知识。读者通过学习本书,不仅能掌握Python语言的基本知识,还能学习如何在实践中运用该语言解决问题。
《Python入门经典:以解决计算问题为导向的Python编程实践》不仅适合入门级的Python程序员系统学习,也适合作为高等院校计算机和非计算机专业的程序设计课程教材。
目录
译者序
前言
第一部分关于计算机的思考
第0章计算机科学研究
0.1为什么要研究计算机科学
0.1.1计算机科学的重要性
0.1.2计算机“科学”
0.1.3通过编程学习计算机科学
0.2编程的困难和使命
0.2.1困难1:同时做两件事
0.2.2困难2:什么是好程序
0.2.3程序的使命
0.3选择一种计算机语言
0.3.1各种计算机语言
0.3.2为什么选Python
0.3.3Python是最好的程序语言吗
0.4什么是计算
0.5什么是计算机
0.5.1自然界中的计算
译者序
本书的两位作者具有近30年的大学计算机教学与实践经验,他们在长期的教学实践中发现Python非常适合作为学习计算机编程的第一门语言,于是编写了这本教材。
关于Python的书很多,其中不乏一些出色之作。作为一位计算机教学工作者,我深感本书是一本值得推荐的教材。它具有如下的特色:
(1)内容丰富,安排合理。本书不仅涵盖了Python程序设计的各个方面,还介绍了计算机科学的发展、面向对象编程、数据挖掘、模式识别等相关内容。本书自始至终从学习者的角度出发,采用了“先用后解释”等方式来组织内容,某些概念在不同的章节中逐步深入,章节安排合理且人性化。
(2)理论和实践紧密结合。本书的核心是“数据处理”,内容组织上非常注重理论联系实践。每章不仅给出了大量的实例和代码示范,而且还有编程技巧、总结、自测练习、课后习题和编程项目等多个模块。
(3)选材新颖,趣味性强。本书的实例设计范围很广,极富趣味性。NBA、好莱坞、标准普尔指数、Google、乳腺癌等实例与读者的生活紧密相关,容易调动学习的积极性。此外文本分析、分类器、数据挖掘等练习设计也非常巧妙,开拓了学习者的视野,为未来进行更深入的研究奠定了基础。
通过学习本书,读者能够快速轻松地掌握Python语言,并且还有可能对计算机科学产生浓厚的兴趣。在国内的计算机本科教学中,Python语言不是常用的教学语言,也鲜有教材具有本书的丰富性和趣味性。
本书的翻译工作主要由张敏完成,林杰、伍敏如、张宗辉等人也为本书的翻译工作做出了贡献,在此也要感谢华章公司的各位编辑对翻译工作提出的许多中肯的意见。
在本书的翻译过程中,译者深感在专业功底和文化背景上都有所欠缺,难免会有遗憾,欢迎读者批评指正。开放是Python不断完善和进步的动力,希望大家互相帮助,共同进步。
译者
前言
基于我在密歇根州立大学30年的本科生计算机教学经验,推荐Python作为编程初学者(不论计算机专业还是非计算机专业的学生)的入门语言。我曾经教授过 Pascal、C/C++等课程,现在教授Python,从中总结出一门好的程序设计入门语言应该具有两个特点。首先,编程语言本身要相对简单易学。由于程序设计的第一堂课大多会介绍如何使用计算的方式来解决问题,以及如何在解决新的问题时准确应用此方法,因此我们希望编程语言本身尽量不要成为学习理解的障碍。Python 的简单性、强大的内置数据结构以及先进的控制结构能让学生更多地将精力集中于寻找解决问题的方法上,而不是将精力花费在学习编程语言上。其次,编程语言应该是实用的。学生在学习时应清楚地知道,所学的知识将来是要使用的。Python语言不仅支持基础的编程概念(例如典型的程序结构、基本的面向对象方法、通用的数据结构等),它还可以进行复杂的计算(例如线程和正则表达式)。Python常用于解决实际问题,如网络访问和数据库操作等。有数千个领域(几乎涵盖了所有我们能想到的)正在使用由活跃的Python社区 (http://pypiPythonorg)提供的工具。学习过一门编程语言的学生(不论是否是计算机专业的学生),在此后的计算机科学课程学习或者职业生涯中,当遇到问题时总会想到“嗨,我要写一个程序来解决它”。我们认为,这正是计算思想的体现。在采用Python作为教学入门语言后,我们每学期都发现了很多这样的成功案例,尤其是学生们反馈Python对他们的学习和工作都大有裨益。
本书以数据的处理和分析为主题,强调编程的基础问题和实践。让学生着手解决实际问题,这些问题所使用的数据可能来自于互联网上的各类公开数据集,也可能是基于学生个人兴趣或工作而生成的数据集。本书同时也强调程序开发,提供了多个能实现的示例以及3章的内容来详细介绍程序的设计和实现。作为课程内容的一部分,学生们对乳腺癌的数据进行分析,对电影演员的关系进行分类,预测太阳风暴所导致的卫星信号中断,并分析其他一些数据。我们还发现,属于CS1的Python课程所涉及的概念,能够与CS2 中的C++课程很好地衔接,对课程素材或者学生来说几乎没有任何影响。
本书的目标如下:
1)针对计算机专业或者非计算机专业的学生,利用Python语言作为工具,教授CS1课程内容中解决问题的方法。
2)提供程序开发示例,关注学生最终可能遇到的各类数据分析问题。
3)为那些学习过CS1但没学过其他编程课程的学生提供基础的编程实践,帮助他们在各自的研究领域获得有作用和有意义的成果。
本书结构
本书的内容安排完全遵循了CS1课程的内容要求,只在少数地方有所不同。例如,本书将字符串的介绍稍稍提前(在介绍函数前),以便能提早进行数据处理。基于同样的考虑,还提前介绍了基本的文件输入与输出,并在后续的章节中进行了更详细的介绍。本书的主题是数据处理,为了服务于这一主题,全书中各部分内容的分布也进行了相应的调整。
采用了“对象运用优先”(objectusefirst)的方法,在前面的章节中,就使用了Python内置的对象及其方法,而用户自定义对象的设计和实现则是在后来才进行介绍。我们发现,当学生领会到Python已有对象的用途后,他们能更好地接受类的概念,并创建自定义的类。换句话说,可以用这种方法来激励学生编写类的需求。函数的介绍分成两部分进行,这是因为 Python能处理可变对象(例如参数列表),对于这类问题的讨论只能在已经理解可变对象列表的前提下才能进行。
第3章、第10章和第13章是关于程序设计的主要章节,提供了“把东西绑在一起”的机会,也展示了如何设计问题的解决方案。还有部分章节可作为学生的补充阅读材料,教师也可选讲其中的部分内容。第0章介绍了背景知识,包括计算机设备的一般概念和一些计算机术语。这些介绍是非常重要的,每个人都应该了解一些关于计算机的知识,这部分内容可作为阅读材料。本书的最后一章在某些课程中也许不会用到。
本书特点
数据处理
数据处理是贯穿本书的主题,示例涉及的范围较广,从文本分析和乳腺癌分类等问题。沿着这条思路,本书提供了一些分析示例,其中用到了一些简单的图表。我们采用已有的软件包来绘制图表,而不是选择自己动手去开发。我们用到了Python内置的包Turtle graphics,和广泛使用的包matplotlib(包含numpy)。
本书尽量采用非数字的示例,但也保留了一些非常经典的数字示例。例如,采用了有理数例子来创建重载运算符的类。我们的目标是尽量选用最好的示例。
解决问题和案例分析
整本书都一直在强调“解决问题”,重点采用了各个击破的思想来设计解决方案。第3章、第10章和第13章全部都是关于程序开发的内容。在这部分内容中,学生将看到大型示例的解决方案。除了设计正确的方案,本书也给出了一些包含错误的示例,并讲解如何改正这些错误。总而言之,本书不是在简单地展示问题的解决方案,而是在展示设计和实现解决方案的全过程。
代码示例
全书共有超过180个示例代码,其中大部分比较简短,但是另一部分是某些大型项目中的代码段。
交互式会话
书摘
关于计算机的思考
第0章
计算机科学研究
01为什么要研究计算机科学
这是一个老生常谈的问题。为什么人们要费心研究计算机科学呢?也许你会进一步问“什么是计算机科学”?难道计算机科学就是编程吗?这些都是好问题。在学习本书后面的内容之前,探讨这些问题是非常有意义的。
011计算机科学的重要性
说实话,如果我们不认为计算机科学非常重要,就不会写本书来浪费大家的宝贵时间。当然,还有许多方法可以证明这么做是正确的。
首先,我们都知道现在有以数百万计的计算机,它们已经无处不在。曾经非常稀少昂贵的部件,现在和任何能想象到的商品一样平凡(过去曾用烤面包机来比喻计算机,但是现在计算机比烤面包机还多。实际上,在烤面包机里还真有一个小计算机在运作!)。但仅仅这个理由还不够,同样有以数百万辆计的汽车存在,但是在大学里,并没有把汽车修理作为一个单独的研究领域。
其次,计算机不仅常见,而且比历史上任何其他商品都具有普遍适用性。汽车仅对运输业有帮助,而计算机在很多情况下都能用到。事实上,很难找到计算机不起作用的领域。这就是最关键的一点,无论你的兴趣是什么,计算机都能作为协助你的一个工具。计算机这种万能工具是独一无二的,学会使用这种工具非常重要。
012计算机“科学”
任何领域,凡是在其名称中有“科学”字眼的,保证不是一门科学。
——Frank Harary
一种常见的观点认为“计算机科学”是“计算机编程”的一个美称。确实,用计算机进行编程,是大多数人接触计算机的方式,也是学习计算机课程的主要原因。但是“计算机科学”这个词的含义更强调计算而不是编程,下面是一些例子。
1计算理论
在计算机大量出现之前,科学家们一直在思考计算的意义和局限性。他们会提出一些能够设想到,但不能计算出的问题。这些问题确实存在,例如其中一个“Halting Problem”http://enwikipediaorg/wiki/Halting_problem。这个问题是:输入一段程序代码和一个针对此程序的输入,能否通过编程判断运行这个程序后,程序是否会终止。 ,就不能用任何计算机程序得出结果。找出计算机能够解决问题的范围,对于研究计算理论的科学家而言,是非常重要的研究内容。
2计算效率
一个问题是可计算的,并不意味着它就很容易计算。了解解决一个问题的困难程度是很重要的;而且要制定出有意义的困难度量指标,本身也是一件有趣的事,时间是人们非常关注的一个指标。假设需要设计出这样一个解决方案,需要对100 000个条目(例如癌症患者的记录、小行星的名字、电影插曲数等)进行排序处理。较慢的排序算法(如冒泡排序算法)用时大概为800秒(约13分钟),而较快的算法(如快速排序算法)只需用时03秒。它们相差了2400倍!这种巨大的差异也许会决定这件事是否值得去做。我们在设计解决方案之前,最好知道哪些因素会导致它的速度加快或者减慢。
3算法和数据结构
计算机科学家们认为,算法和数据结构是计算机科学中最有价值的部分,第3章会对此进行详细介绍。算法是解决问题的方法,而数据结构是算法中所用数据的组织结构。这两者之间是有区别的:解决某类问题的通用方法(例如查找特定值、将对象列表排序、对消息加密等)要根据被处理对象(例如对象列表,可能是字典的键/值对,也可能是树形记录)的数据结构不同而发生变化。但是,它们也是紧密耦合的。算法和数据结构都能够独立于编程方式实现,即可以先设计算法和数据结构,然后在特定的计算机程序中应用此算法和数据结构。脱离编程语言,抽象地理解算法和数据结构设计,有助于写出正确高效的代码。