首页>参考读物>计算机科学与技术>软件与程序设计

Python入门经典:以解决计算问题为导向的Python编程实践
作者 : (美) William F. Punch Richard Enbody 著
译者 : 张敏 等译
出版日期 : 2012-08-22
ISBN : 978-7-111-39413-6
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 466
开本 : 16
原书名 : The Practice of Computing using Python
原出版社: Pearson Education Asia
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

本书以数据的处理和分析为主题,强调编程的基础和实践,全面涵盖Python的特性和用法。本书分为五部分,第一部分介绍计算机设备的一般概念和一些计算机术语,;第二部分开始介绍编程的基本知识,包括入门知识和控制语句,为后续内容做铺垫。第三部分讲述数据结构和函数,包括字符串、列表和元组、、字典和集合、文件、函数、算法和程序等进阶内容,有助于读者提升编程技能;第四部分重点介绍如何使用类定义数据结构和算法、开发程序等,培养读者运用Python语言来实现基本的计算思想和策略的能力;第五部分主要介绍异常、测试和递归,旨在使读者成为更好的程序员。本书深入浅出,每一章节均给出了大量的实例、示范代码和自测练习,便于读者理解和掌握相关知识。读者通过学习本书,不仅能掌握Python语言的基本知识,还能学习如何在实践中运用该语言解决问题。

图书特色

Python是一种功能强大的脚本编程语言,简洁而优雅,且易于入门,计算机专业人士和非专业人士都能快速入门。在理论方面,本书从计算接科学和教学的角度来组织和规划全书的内容,针对编程初学者的需求,对Python编程相关的知识进行了系统的讲解。在实例方面,本书以数据的处理和分析为主题,强调编程的基础和实践,通过大量案例全面阐释了Python的特性和用法。通过学习本书,读者不仅能掌握Python开发的相关知识,还能具备在实践中运用Python解决实际问题的能力。

本书主要内容:
Python语言的语法和语义。
Python的两种控制结构:选择和循环。
算法和程序的概念,重点强调程序是算法的实现这一观点。
字符串类型以及基于字符串类型的多种方法和函数。
Python中的函数,以及函数的创建方法和工作原理。
列表数据结构以及元组类型。
文件的输入和输出。
在大型项目的开发过程中利用面向对象编程思想来进行程序设计。
提高类设计能力的方法,以及如何用类解决问题。

作者简介






William F. Punch
1989年获得密歇根州立大学计算机科学博士学位,2006年至今担任密歇根大学高性能计算中心(www.hpcc.msu.edu)的主任,具有30多年的计算机教学和实践经验。研究方向包括:基因算法和基因编程,涵盖理论问题(并行GA/GP)和应用问题(设计、布局和调度),以及数据挖掘等。在计算机方面有十多年丰富的教学经验,撰写过多本计算机图书,发表过上百篇关于计算机的论文。







Richard Enbody
Richard Enbody博士是密歇根州立大学计算机科学和工程系教授,具有30多年丰富的计算机教学经验,研究方向包括:计算机安全、计算机体系结构、并行处理等,发表过50多篇关于计算机技术的论文。

图书前言

计算机科学的第一堂课上都会介绍一种解决问题的新方式——计算,关于计算的第一堂课往往会关注如何“解决问题”。实际上,解决问题的教学与计算机语言的使用往往是交织在一起的。因此,对初学者而言,第一门编程语言的选择至关重要。
  基于我在密歇根州立大学30年的本科生计算机教学经验,推荐Python作为编程初学者(不论计算机专业还是非计算机专业的学生)的入门语言。我曾经教授过 Pascal、C/C++等课程,现在教授Python,从中总结出一门好的程序设计入门语言应该具有两个特点。首先,编程语言本身要相对简单易学。由于程序设计的第一堂课大多会介绍如何使用计算的方式来解决问题,以及如何在解决新的问题时准确应用此方法,因此我们希望编程语言本身尽量不要成为学习理解的障碍。Python 的简单性、强大的内置数据结构以及先进的控制结构能让学生更多地将精力集中于寻找解决问题的方法上,而不是将精力花费在学习编程语言上。其次,编程语言应该是实用的。学生在学习时应清楚地知道,所学的知识将来是要使用的。Python语言不仅支持基础的编程概念(例如典型的程序结构、基本的面向对象方法、通用的数据结构等),它还可以进行复杂的计算(例如线程和正则表达式)。Python常用于解决实际问题,如网络访问和数据库操作等。有数千个领域(几乎涵盖了所有我们能想到的)正在使用由活跃的Python社区 (http://pypiPythonorg)提供的工具。学习过一门编程语言的学生(不论是否是计算机专业的学生),在此后的计算机科学课程学习或者职业生涯中,当遇到问题时总会想到“嗨,我要写一个程序来解决它”。我们认为,这正是计算思想的体现。在采用Python作为教学入门语言后,我们每学期都发现了很多这样的成功案例,尤其是学生们反馈Python对他们的学习和工作都大有裨益。
  本书以数据的处理和分析为主题,强调编程的基础问题和实践。让学生着手解决实际问题,这些问题所使用的数据可能来自于互联网上的各类公开数据集,也可能是基于学生个人兴趣或工作而生成的数据集。本书同时也强调程序开发,提供了多个能实现的示例以及3章的内容来详细介绍程序的设计和实现。作为课程内容的一部分,学生们对乳腺癌的数据进行分析,对电影演员的关系进行分类,预测太阳风暴所导致的卫星信号中断,并分析其他一些数据。我们还发现,属于CS1的Python课程所涉及的概念,能够与CS2 中的C++课程很好地衔接,对课程素材或者学生来说几乎没有任何影响。
  本书的目标如下:
  1)针对计算机专业或者非计算机专业的学生,利用Python语言作为工具,教授CS1课程内容中解决问题的方法。
  2)提供程序开发示例,关注学生最终可能遇到的各类数据分析问题。
  3)为那些学习过CS1但没学过其他编程课程的学生提供基础的编程实践,帮助他们在各自的研究领域获得有作用和有意义的成果。
本书结构
  本书的内容安排完全遵循了CS1课程的内容要求,只在少数地方有所不同。例如,本书将字符串的介绍稍稍提前(在介绍函数前),以便能提早进行数据处理。基于同样的考虑,还提前介绍了基本的文件输入与输出,并在后续的章节中进行了更详细的介绍。本书的主题是数据处理,为了服务于这一主题,全书中各部分内容的分布也进行了相应的调整。
  采用了“对象运用优先”(objectusefirst)的方法,在前面的章节中,就使用了Python内置的对象及其方法,而用户自定义对象的设计和实现则是在后来才进行介绍。我们发现,当学生领会到Python已有对象的用途后,他们能更好地接受类的概念,并创建自定义的类。换句话说,可以用这种方法来激励学生编写类的需求。函数的介绍分成两部分进行,这是因为 Python能处理可变对象(例如参数列表),对于这类问题的讨论只能在已经理解可变对象列表的前提下才能进行。
  第3章、第10章和第13章是关于程序设计的主要章节,提供了“把东西绑在一起”的机会,也展示了如何设计问题的解决方案。还有部分章节可作为学生的补充阅读材料,教师也可选讲其中的部分内容。第0章介绍了背景知识,包括计算机设备的一般概念和一些计算机术语。这些介绍是非常重要的,每个人都应该了解一些关于计算机的知识,这部分内容可作为阅读材料。本书的最后一章在某些课程中也许不会用到。
本书特点
  数据处理
  数据处理是贯穿本书的主题,示例涉及的范围较广,从文本分析和乳腺癌分类等问题。沿着这条思路,本书提供了一些分析示例,其中用到了一些简单的图表。我们采用已有的软件包来绘制图表,而不是选择自己动手去开发。我们用到了Python内置的包Turtle graphics,和广泛使用的包matplotlib(包含numpy)。
  本书尽量采用非数字的示例,但也保留了一些非常经典的数字示例。例如,采用了有理数例子来创建重载运算符的类。我们的目标是尽量选用最好的示例。
  解决问题和案例分析
  整本书都一直在强调“解决问题”,重点采用了各个击破的思想来设计解决方案。第3章、第10章和第13章全部都是关于程序开发的内容。在这部分内容中,学生将看到大型示例的解决方案。除了设计正确的方案,本书也给出了一些包含错误的示例,并讲解如何改正这些错误。总而言之,本书不是在简单地展示问题的解决方案,而是在展示设计和实现解决方案的全过程。
  代码示例
  全书共有超过180个示例代码,其中大部分比较简短,但是另一部分是某些大型项目中的代码段。
  交互式会话
  Python 解释器提供了非常好的机制来简明地阐释编程和解决问题的思想,全书共提供了近250个交互式会话示例来进行阐释。
  练习和编程项目
  实践,实践,再实践。本书为学生提供了275余个小练习,以及约30个较大型的编程项目(很多项目包含多个部分),以供实践。
  自测练习
  全书共有24个自测练习,每个练习不少于5个相关的问题。
  编程技巧
  全书共有40余个特别提示,提醒学生注意一些有用的编程技巧和事项,这些提示都专门标记了出来。
  网上补充材料
   供学生使用的材料:
  - 所有示例的源代码
  - 示例中用到的数据集
  以上材料可在wwwpearsonhigheredcom/cssupport上免费获取。
   供教师使用的材料:
  - Powerpoint 幻灯片
  - 实验练习
  - 用于幻灯片的图片(PDF格式)
  - 练习解答
  教师可通过访问wwwpearsonhigheredcom/irc 获取补充材料,请在网站注册以获取访问权限,也可以通过本地Pearson Education 代理或发邮件到computing@awcom获取。
  Python 2x 与Python 3x
  本书内容基于Python 2x(x≥6)版本,之所以没有采用Python 3x版本,是因为目前的Python 3x版本还不能向后兼容标准的Python包,附录D列出了这两个版本之间的差异。在本书所涉及的内容中,两者的差异微不足道,但是支持当前的Python包对于我们所采用的方法而言至关重要,因此,在Python 3x版本还没有对标准包提供支持之前,本书将继续使用Python 2x版本。
致谢
  感谢在本书的多个阶段提供了有价值意见的审稿人,他们是:Claude Anderson(罗斯霍曼理工学院)、Chris Brooks(旧金山大学)、Judy Franklin(史密斯学院)、Alan Garvey(杜鲁门州立大学)、Ronald IGreenberg(洛约拉大学)、Andrew Harrington(洛约拉大学)、Steve Harrison(弗吉尼亚理工大学)、Christopher Haynes(印第安纳大学)、Cinda Heeren(伊利诺伊大学香槟分校)、Brian Howard(德堡大学)、Janardhan Iyengar(富兰克林与马歇尔学院)、Andree Jacobson(新墨西哥大学)、John Lasseter(威拉米特大学)、Jim Mahoney(万宝路学院)、Joe Oldham(中心学院)、Holly PattersonMcNeill(刘易斯克拉克州立学院)、John Rabung(兰道夫-梅肯大学)、Ben Schafer(北爱荷华大学)、David GSullivan(波士顿大学)、David ASykes(沃福德大学)。来自密歇根州立大学的人员有:Erik Eid(现在博林格林州立大学),他对本书的初稿提出了非常有价值的反馈意见;Laurie Dillon 采用本书C语言初稿教学并给出了反馈意见;Titus Brown从Python的角度出发阅读了初稿并给我们鼓励。高中生Angus Burton从初学者的角度给出了有益的意见。Sirkanth Vudayagiri 提供了一些很棒的练习题。Scott Buffa 对最初的几稿进行了校对。暑期CSE 231 课程班提供了很多练习题,班上的学员有:Mohammed Alwahibi、Younsuk Dong、Michael Ford、Gabriel Friedman、Adam Hamilton、Meagan Houang、Ruba Jiddon和Adam Palmer。我们的课程设置由Mark Mcllen 负责,他总是乐于给出好的建议。Larry Nyhoff(卡尔文大学)在一次晚宴上和我们分享了他非常有价值的见解,而这正是一切的开始。
WFPUNCH
RJENBODY

上架指导

计算机\程序设计

封底文字

Python是一种功能强大的脚本编程语言,简洁而优雅,且易于入门,计算机专业人士和非专业人士都能快速入门。在理论方面,本书从计算接科学和教学的角度来组织和规划全书的内容,针对编程初学者的需求,对Python编程相关的知识进行了系统的讲解。在实例方面,本书以数据的处理和分析为主题,强调编程的基础和实践,通过大量案例全面阐释了Python的特性和用法。通过学习本书,读者不仅能掌握Python开发的相关知识,还能具备在实践中运用Python解决实际问题的能力。
本书主要内容:
 Python语言的语法和语义。
 Python的两种控制结构:选择和循环。
 算法和程序的概念,重点强调程序是算法的实现这一观点。
 字符串类型以及基于字符串类型的多种方法和函数。
 Python中的函数,以及函数的创建方法和工作原理。
 列表数据结构以及元组类型。
 文件的输入和输出。
 在大型项目的开发过程中利用面向对象编程思想来进行程序设计。
 提高类设计能力的方法,以及如何用类解决问题。
 值的一致性、自检和运算符重载,以及递归。
 Python的异常和内置的测试功能。

作者简介

(美) William F. Punch Richard Enbody 著:暂无简介

译者简介

张敏 等译:暂无简介

译者序

Python是诞生于1989年的一种开放源代码的脚本编程语言,简洁而优雅,且功能强大。它的语言风格清晰,具有较强的可读性,应用非常广泛。
  本书的两位作者具有近30年的大学计算机教学与实践经验,他们在长期的教学实践中发现Python非常适合作为学习计算机编程的第一门语言,于是编写了这本教材。
  关于Python的书很多,其中不乏一些出色之作。作为一位计算机教学工作者,我深感本书是一本值得推荐的教材。它具有如下的特色:
  (1)内容丰富,安排合理。本书不仅涵盖了Python程序设计的各个方面,还介绍了计算机科学的发展、面向对象编程、数据挖掘、模式识别等相关内容。本书自始至终从学习者的角度出发,采用了“先用后解释”等方式来组织内容,某些概念在不同的章节中逐步深入,章节安排合理且人性化。
  (2)理论和实践紧密结合。本书的核心是“数据处理”,内容组织上非常注重理论联系实践。每章不仅给出了大量的实例和代码示范,而且还有编程技巧、总结、自测练习、课后习题和编程项目等多个模块。
  (3)选材新颖,趣味性强。本书的实例设计范围很广,极富趣味性。NBA、好莱坞、标准普尔指数、Google、乳腺癌等实例与读者的生活紧密相关,容易调动学习的积极性。此外文本分析、分类器、数据挖掘等练习设计也非常巧妙,开拓了学习者的视野,为未来进行更深入的研究奠定了基础。
  通过学习本书,读者能够快速轻松地掌握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自然界中的计算
052人类制造的计算机
06现代电子计算机
061就是开关
062晶体管
07从更高层面来了解现代计算机
08数据表示
081二进制数据
082使用二进制
083局限性
084字符表示
085其他数据表示
086数字代表什么
087数据量
088数据量有多大
09后续章节概述
010总结
第二部分开始编程
第1章入门
11练习,练习,再练习
12快速入门——计算圆周长的程序
13交互式会话
14程序组成部分
141模块
142表达式和语句
143空白
144注释
145Python 的特殊元素:标记
146对象命名
15变量
16对象和类型
161数字
162其他内置类型
163对象类型:非变量类型
164创建新值
17运算符
171整数运算符
172浮点运算符
173混合运算符
174运算符顺序和圆括号
175增强的赋值运算符:快捷方式
18第一个模块:math模块
19开发算法
110总结
111视觉场景:海龟绘图
习题
编程项目
第2章控制语句
21选择语句:if
211利用布尔值做决定
212if 语句
213示例:在篮球运动中,领先多少分才安全
214循环
215例子:寻找完全数
216例子:对数字分类
22深入控制语句
221真与假:布尔值
222布尔变量
223关系运算符
224布尔运算符
225优先级
226布尔运算符示例
227另一种赋值方式
228用于判定的选择语句
229Python判定语句进阶
2210循环:while语句
2211信号量循环
2212循环总结
2213for语句进阶
2214嵌套
2215冰雹序列示例
23视觉场景:用pylab对数据绘图
231使用列表和第一次绘制
232更有趣的绘图:正弦波
24计算机科学观点:最小的通用计算
25总结
习题
编程项目
第3章算法和程序开发
31什么是算法
32算法特征
321算法和程序
322细化
323有效性
324指定行为
325通用算法
326真的可以实现一切吗
33程序是什么
331可读性
322鲁棒性
333正确性
34程序设计策略
341参与并提交
342了解,然后想象
343编程之前先思考
344实验
345简化
346停下来思考
347放松:让自己休息一下
35简单示例
351搭建框架
352输出
353输入
354计算
36总结
习题
第三部分组织:数据结构和函数
第4章字符串
41字符串类型
411三重引号字符串
412非显示字符
413字符串表示形式
414字符序列
415索引和分片
42字符串操作
421连接(+)和重复(*)
422“+”什么时候表示加法运算,什么时候表示连接运算
423比较运算符
424in运算符
425字符串集合是不可变的
43函数和方法预览
431第一步:什么是函数
432选择方法的名字和参数
433字符串方法
434字符串函数
44字符串的格式化输出
441描述符码
442宽度描述符
443浮点数精度描述符
45字符串与控制语句
46处理字符串
461示例:记录人名
462回文
47示例:计算扑克牌
48总结
习题
编程项目
第5章函数快速入门
51函数是什么
52Python 函数
53函数控制语句
531函数控制语句详解
532另一个函数示例
533函数示例:猜词
534函数调用函数
535什么时候使用函数
536如果没有return语句会如何
537如果有多条return语句会如何
54视觉场景:用海龟绘图法绘制美国国旗
55总结
习题
编程项目
第6章列表和元组
61什么是列表
62操作列表
621索引和分片
622运算符
623函数
624列表循环
63列表新内容
631列表可变性
632列表方法
64range、split及其他函数和方法
641range、split和多重赋值
642使用join在列表和字符串之间转换
643sorted 函数
65示例
651字谜
652示例:文件分析
66可变对象及其引用
661深拷贝与浅拷贝
662可变与不可变
67元组
671从列表到元组
672为什么需要元组
68列表:数据结构
681数据结构示例
682数据结构的另一个示例
69算法示例:美国环境保护署通车里程数据
610列表解析
611视觉场景:更多绘制任务
6111numpy阵列
6112绘制三角函数
612总结
习题
编程项目
第7章深入了解函数
71函数调用函数
72作用域
721实参、形参和命名空间
722传递可变对象
723返回复杂对象
724重构evens
73默认值以及形参为关键字
731示例:默认值和参数关键字
732默认值问题
74函数和对象
75示例:确定最终成绩
751数据
752设计
753函数:weightedGrade
754函数:grade
755函数:main
756使用示例
76“传值”或者“传引用”
77总结
习题
编程项目
第8章字典和集合
81字典
811字典示例
812Python 字典
813字典索引和赋值
814运算符
82单词计数示例
821统计字符串中的单词数
822《葛底斯堡演说》中的单词出现频率
823输出和注释
83示例:周期表
831使用CSV文件
832算法概述
833实现分治的函数
84集合
841集合的历史
842集合的组成
843Python 集合
844Python集合的方法、运算符和函数
845集合方法
85集合应用
851不同文件中单词之间的关系
852输出和注释
86作用域:完整的故事
861命名空间和作用域
862作用域搜寻规则
863局部命名空间
864全局命名空间
865内置模块
866封闭式变量
87Python指针:使用zip创建字典
88视觉场景:词频条形图
881正确获取数据
882标签和xticks命令
883绘图
89总结
习题
编程项目
第9章文件
91什么是文件
92存取文件:读取文本文件
921其他文件存取方法
922数据流
93存取文件:写文本文件
94在程序中存取文本文件
95创建文件和重写文件
951通用新行格式
952文件内移动
96关闭文件
97CSV文件
971CSV模块
972CSV Reader
973CSV Writer
974示例:更新某些成绩
98示例:反复提示,要求输入正确的文件名
99模块:os
991目录/文件夹的结构
992os模块函数
993os模块示例
910总结
习题
编程项目
第10章程序开发进阶
101简介
102分治
103乳腺癌分类
1031问题
1032方法:分类
1033训练和测试分类器
1034构造分类器
104设计分类器算法
1041先分解,再合并
1042数据结构
1043文件格式
1044makeTrainingSet函数
1045makeTestSet函数
1046trainClassifier函数
1047第2轮修改后的trainClassifer
1048用新数据测试分类器
1049reportResults函数
105在完整数据上运行分类器
106其他有趣的问题
1061标签云
1062标准普尔500预测
1063用国旗预测宗教
107总结
习题
编程项目
第四部分类:自定义数据结构和算法
第11章类
111面向对象编程
1111Python是面向对象的
1112OOP特性
112使用OOP
113使用类和实例
1131内置类和实例
1132第一个类
1133修改属性
1134实例和类之间的特殊关系:instanceof
114对象方法
1141使用对象方法
1142编写方法
1143特殊参数self
1144方法是类实例的接口
115融入Python类模型
1151程序员定义的类
1152Student类
1153Python标准方法
1154三种角色:类设计者、程序员和用户
116示例:Point类
1161构造函数
1162距离
1163两点求和
1164改进Point类
117Python和OOP
1171封装性
1172继承
1173多态性
118Python和其他OOP语言
1181公有与私有
1182使用双下划线表示私有
1183Python的宗旨
1184修改实例
119总结
习题
编程项目
第12章类进阶
121更多类属性
122Python实现机制
1221类、类型与自检
1222运算符重载
123自定义运算符重载
124创建有理数类
1241生成类
1242分数加法回顾
1243分数加法
1244相等和分数化简
1245应用分治
125错误消息
1251自检
1252修复int+Rational错误
126继承
1261“寻找属性”游戏
1262使用继承
1263实例:物理学标准模型
127总结
习题
第13章使用类开发程序
131捕食问题
1311规则
1312面向对象的模拟
132类
1321Island类
1322捕食者和猎物、动物种类
1323捕食者类和猎物类
1324对象图
1325填充Island
133添加行为
1331细化:添加移动
1332时间循环仿真
134逐步求精
1341改进的时间循环
1342繁殖
1343进食
1344时钟节拍
135细化问题
1351移动多少次
1352动物数量的图形化
136总结
习题
第五部分成为更好的程序员
第14章异常和异常处理
141简介
142基本的异常处理
143有关异常的哲学
144异常:else和finally
145异常的用法
1451检查输入
1452检查文件打开
146深入异常
1461raise
1462自定义异常
147示例:密码管理
148总结
习题
第15章测试
151为什么要进行测试
1511错误类型
1512“bug”和调试
152测试类型
1521测试很难
1522测试的重要性
153示例
1531NBA效率
1532基本算法
154混合测试
1541捕捉用户错误
1542捕获开发者犯的错误
155自动测试
1551doctest
1552其他类型的测试
156总结
习题
第16章递归:另一种控制机制
161什么是递归
162数学和兔子
163自定义递归:反转字符串
164递归如何实现
1641栈的数据结构
1642栈和函数调用
165用递归表示图形
1651递归树
1652Sierpinski三角形
166从递归到非递归
167总结
168习题
附录
附录A开始使用Python
附录B用海龟绘图法进行简单绘图
附录C绘图和数值工具:快速浏览
附录DPython 30
附录EASCII码表
附录F优先级

教学资源推荐
作者: [美]克洛维斯· L.汤多(Clovis L. Tondo) 斯科特· E.吉姆佩尔(Scott E. Gimpel)著
作者: (美)Mary Campione,Kathy Walrath,Alison Huml
作者: 刘燕君,刘振安,孙忱
参考读物推荐