Python中文网

Python3.6编程实践指南 计算机科学入门(原书第3版) [Practical Programming: An Introduction to Computer]这本书,是由机械工业出版社在2018-12-01月出版的,本书著作者是 Paul Gries,Jennifer Campbell,Jason Montojo 著,乔海燕 译,此次本版是第1次印刷发行, 国际标准书号(ISBN):9787111609940,品牌为机工出版, 这本书的包装是16开平装,所用纸张为胶版纸,全书共有316页字数46万5000字, 是一本非常不错的Python编程书籍。

此书内容摘要

《Python3.6编程实践指南——计算机科学入门》(原书第3版)通过Python语言介绍了编程的基本知识,内容包括现代编程语言常用的各种数据存储和基本处理方法,如数值、字符串、列表、集合、字典和文本信息;程序的条件和循环控制结构;函数的概念、定义和应用;编程方法以及测试和调试思路。本书也介绍了一些更高级的编程知识,包括面向对象的编程方法、图形用户界面的构建以及数据库的处理。

关于此书作者

Paul Gries在多伦多大学计算机科学系有超过15年的教学经验。在多伦多大学期间,Paul获得过许多教学奖,合作出版了两部教材,而且一直是本系课程设计和更新的领导者。他和Jennifer Campbell在MOOC给成千上万的学生讲授Python。

Jennifer Campbell是多伦多大学在计算机科学方面的教学系列教授。她在2014年获得文理学院杰出教学奖。Jennifer致力于计算机科学教育研究,研究学生体验、成功因素和各种课程的有效性,包括翻转课堂和在线课堂。

Jason Montojo 是具有19年职业经验的软件开发者。他的专业是软件考古学,而且在谷歌编程之夏和软件学徒计划(Software Carpentry programs)中指导过几十位学生。

编辑们的推荐

适读人群 :初学Python语言的程序员,高等院校相关专业的本科生,对Python编程感兴趣的初学者

1)多伦多大学教授带来的经典编程入门书,基于Python3.6,数万学生课堂使用。
2)无需任何编程经验!循序渐进的例子帮助读者理解设计程序过程的步骤和错误,使得读者能够独立解决自己的问题。
3)使用了Python3.6新增加的特性,包括参数的类型注释,返回类型和变量声明,以及字符串格式化的新变化。
4)通过阅读本书,读者将学会如何像职业程序员那样思考问题。
5)所有源代码、安装指引和习题解都可以在以下网站找到:http://pragprog.com/book/gwpy3/practical-programming。

Python3.6编程实践指南 计算机科学入门(原书第3版) [Practical Programming: An Introduction to Computer]图书的目录

译者序

原书前言

致谢

作者简介

第1 章 什么是编程 // 1

1.1程序和编程 //2

1.2什么是编程语言 //3

1.3什么是程序错误(Bug) //3

1.4方括号、圆括号和花括号的区别 //4

1.5安装Python //4

第2 章 你好,Python // 5

2.1计算机如何运行一个Python 程序 //5

2.2表达式和值:用Python 做算术 //6

2.2.1类型 // 7

2.2.2整数除法、模和幂运算 // 8

2.3什么是类型 //9

2.3.1有穷精度 // 10

2.3.2运算的优先级 // 10

2.4变量和计算机内存:记忆值 //12

2.4.1值、变量和计算机内存 // 13

2.4.2赋值语句 // 14

2.4.3给变量重新赋值 // 15

2.4.4增强赋值 // 16

2.5Python 如何告诉用户出错了 //18

2.6占多行的单个语句 //19

2.7代码的描述 //20

2.8增强代码的可读性 //21

2.9本章小结 //21

2.10习题 //22

第3 章 函数的设计与应用 // 24

3.1Python 提供的函数 //24

3.2 内存地址:Python 如何跟踪内存存储的值 //27

3.3自定义函数 //28

3.4用局部变量作临时存储 //31

3.5在内存模型中跟踪函数调用 //32

3.6设计新函数:一个菜单 //38

3.6.1设计三个有关生日的函数 // 40

3.7编写和运行一个程序 //48

3.8省略一个返回语句:暂无. //50

3.9处理代码不能处理的情况 //50

3.10本章小结 //51

3.11习题 //52

第4 章 文本的处理 // 54

4.1构造字符串 //54

4.1.1串上的操作 // 55

4.2在串中使用特殊字符 //57

4.3构建多行串 //58

4.4打印信息 //59

4.5从键盘获取信息 //62

4.6本章小结 //63

4.7习题 //63

第5 章 选择 // 65

5.1布尔类型 //65

5.1.1布尔运算 // 65

5.1.2关系运算 // 68

5.1.3比较运算的组合 // 70

5.1.4短路求值 // 72

5.1.5串的比较 // 72

5.2选择执行的语句 //73

5.3嵌套条件语句 //79

5.4记住一个布尔表达式求值的结果 //79

5.5本章小结 //81

5.6习题 //81

第6 章 程序组织的模块化方法 // 84

6.1导入模块 //85

6.2定义自己的模块 //89

6.2.1导入时发生了什么 // 90

6.2.2在导入时选择要运行的代码:__main__ // 91

6.3半自动地测试代码 //95

6.4函数分组的原则 //96

6.5本章小结 //96

6.6习题 //97

第7 章 方法的使用 // 98

7.1模块、类和方法 //98

7.2面向对象的调用方法 //100

7.3探索字符串方法 //101

7.4那些下划线是什么 //105

7.5本章小结 //107

7.6习题 //107

第8 章 使用列表存储数据集合 // 109

8.1存储和访问列表中的数据 //109

8.1.1空列表 // 111

8.1.2列表是异构的 // 111

8.2列表类型注释 //112

8.3修改列表 //113

8.4列表上的操作 //114

8.4.1列表上的in 操作符 // 116

8.5列表切片 //116

8.6使用别名:名称代表什么 //118

8.6.1可变参数 // 118

8.7列表方法 //120

8.8处理列表的列表 //121

8.9本章小结 //123

8.10习题 //123

第9 章 使用循环重复代码 // 126

9.1处理列表中的数据项 //126

9.2处理字符串中的字符 //128

9.3在某个范围的数字上循环 //128

9.3.1生成数字范围 // 128

9.4用索引处理列表 //130

9.4.1使用索引处理并行列表 // 132

9.5循环嵌套循环 //133

9.5.1嵌套列表上的循环 // 134

9.5.2循环不规则列表 // 135

9.6循环直到某个条件成立 //136

9.6.1无限循环 // 138

9.7基于用户输入的重复 //138

9.8 使用break 和continue 控制循环 //139

9.8.1break 语句 // 139

9.8.2continue 语句 // 141

9.8.3 关于break 和continue的警告 // 142

9.9本章小结 //143

9.10习题 //143

第10 章 文件读写 // 146

10.1文件分多少种 //146

10.2打开文件 //147

10.2.1with 语句 // 148

10.2.2计算机上的文件是如何组织的 // 149

10.2.3指定想要的文件 // 149

10.3读取文件的方法 //150

10.3.1读取方法 // 150

10.3.2Readlines 方法 // 151

10.3.3"For Line in File" 方法 // 152

10.3.4Readline 方法 // 153

10.4互联网上的文件 //155

10.5写入文件 //156

10.6使用StringIO 编写示例调用 //157

10.7 编写使用文件读取技术的算法 //159

10.7.1跳过标题 // 159

10.7.2处理数据中缺失的值 // 161

10.7.3处理空格分隔的数据 // 163

10.8多行记录 //167

10.9向前看 //170

10.10本章小结 //172

10.11习题 //172

第11 章 使用其他容器类型存储数据 // 174

11.1使用集合存储数据 //174

11.1.1集合运算 // 176

11.1.2集合示例:北极鸟 // 178

11.1.3集合的内容一定是不可变的 // 179

11.2使用多元组存储数据 //179

11.2.1使用多元组赋值给多个变量 // 183

11.3用字典存储数据 //184

11.3.1更新和检查成员 // 186

11.3.2遍历字典 // 187

11.3.3字典操作 // 188

11.3.4字典示例 // 190

11.4反转字典 //191

11.5在元组、集合和字典中使用in运算符 //192

11.6各种容器的比较 //193

11.7创建新的类型注释 //193

11.8本章小结 //194

11.9习题 //195

第12 章 算法的设计 // 197

12.1查找两个最小值 //197

12.1.1查找、移除、查找 // 199

12.1.2 排序、确定最小值、获取索引 // 201

12.1.3遍历列表 // 202

12.2定时功能 //205

12.3本章小结 //207

12.4习题 //207

第13 章搜索与排序 // 209

13.1搜索列表 //209

13.1.1线性搜索概述 // 209

13.1.2 线性搜索的while 循环版本 // 211

13.1.3线性搜索的for 循环版本 // 212

13.1.4哨兵搜索 // 213

13.1.5对搜索进行计时 // 214

13.1.6线性搜索的运行时间 // 215

13.2二分搜索 //215

13.2.1二分搜索的运行时间 // 219

13.2.2内置二分搜索 // 219

13.3排序 //220

13.3.1选择排序 // 221

13.3.2插入排序 // 225

13.3.3性能 // 227

13.4更高效的排序算法 //229

13.4.1第一次尝试 // 229

13.5 归并排序:一种快速排序算法 //229

13.5.1归并两个有序列表 // 230

13.5.2归并排序 // 230

13.5.3归并排序的分析 // 232

13.6本章小结 //233

13.7习题 //234

第14 章面向对象的编程 // 236

14.1理解一个问题域 //236

14.2 isinstance 函数、object 类和Book 类 //237

14.3在Book 类中编写一个方法 //240

14.4 使用Python 语法:更多特殊的方法 //246

14.5面向对象理论的一些知识 //249

14.5.1封装 // 249

14.5.2多态 // 250

14.5.3继承 // 251

14.6 案例学习:分子、原子和PDB文件 //254

14.6.1Atom 类 // 255

14.6.2Molecule 类 // 256

14.7本章小结 //258

14.8习题 //258

第15 章测试与调试 // 262

15.1为什么需要做程序测试 //262

15.2 案例学习:测试above_freezing //263

15.2.1 为above_freezing 选择测试样例 // 263

15.2.2 使用unittest 模块测试above_freezing // 264

15.3 案例学习:测试函数running_sum //267

15.3.1 为函数running_sum 选择测试样例 // 268

15.3.2 使用unittest 模块测试running_sum 函数 // 268

15.4选择测试样例 //273

15.5寻找程序错误 //273

15.6本章小结 //274

15.7习题 //274

第16 章 创建图形用户接口 // 277

16.1使用tkinter 模块 //277

16.2构建一个基本的GUI //278

16.2.1 在小部件中使用可修改变量 // 279

16.2.2 使用框架类型来组合小部件 // 280

16.2.3 使用输入框类型从用户处获取信息 // 281

16.3模型、视图和控制器 //281

16.3.1使用Lambda // 283

16.4自定义可视化样式 //286

16.4.1改变字体 // 286

16.4.2改变颜色 // 286

16.4.3小部件的布局 // 288

16.5其他小部件简介 //289

16.5.1使用文本 // 289

16.5.2使用复选按钮 // 290

16.5.3使用菜单 // 291

16.6面向对象的GUI //292

16.7本章小结 //293

16.8习题 //294

第17 章 数据库 // 295

17.1概述 //295

17.2创建和填充 //296

17.2.1保存更改 // 298

17.2.2关闭连接 // 299

17.3数据检索 //299

17.3.1查询条件 // 301

17.4更新和删除 //301

17.5为缺失的数据使用NULL //302

17.6使用连接来组合表格 //303

17.6.1移除重复值 // 306

17.7键和约束 //307

17.8高级功能 //308

17.8.1聚合 // 308

17.8.2分组 // 308

17.8.3自连接 // 309

17.8.4嵌套查询 // 310

17.8.5事务 // 312

17.9本章小结 //313

17.10习题 //314

参考文献 //316


部分内容试读

《Python3.6编程实践指南——计算机科学入门》(原书第3版)使用Python 编程语言讲解计算机科学课题和一些实际应用。读者在阅读本书的过程中定能学会Python,同时也会学到每个程序员应该掌握的知识:如何理解一个问题,如何将问题分解,为何及如何构建代码,如何测试代码以确保程序确实符合需求,等等。
选择Python 有以下几方面的原因:
1)Python 是免费的,而且有翔实的资料。事实上,Python 是目前规模最大、组织最好的开源项目之一。
2)Pyhton 可以在任何设备上运行。从手机到超级计算机均可以运行用C 语言实现的Python,而且对Windows、macOS 和Linux 均有专业级安装程序支持。
3)Python 有清晰的语法。确实,每种语言都声称语法清晰,但是经过在多伦多大学多年的使用,我们发现,学生使用Python 所犯的“标点符号”错误比使用类C 语言所犯的错误少得多。
4)Python 有实际应用。每天有成千上万的公司使用Python :它是Google使用的语言之一,Industrial&LightMagic 大量使用Python,EVE 在线的大量游戏基于Python 编写。学术界也大量使用Python。
Python 有很好的工具支持。传统的编辑器如vi和Emacs都具有Python 编辑模式,另有多个专业级的集成开发环境(IDE)可供使用。(本书使用IDLE—Python 标准安装附带的免费开发环境。)
1.本书内容编排方法
《Python3.6编程实践指南——计算机科学入门》(原书第3版)分两部分。第一部分(第1~13章)包括编程基本概念:如何存储和处理信息(数字、文本、列表、集合、字典和文件),如何控制程序的执行(条件和循环),如何组织代码(函数和模块),如何确保程序正确运行(测试和调试),以及如何设计程序(算法)。
第二部分由第14~17章组成,涉及进一步的知识,本部分以第一部分为基础。第14章介绍如何创建和处理自己构建类型的信息,内容包括面向对象的概念,如封装、继承和多态。第15~17 章覆盖了测试、数据库和图形用户界面的构建等内容。
2.进一步的阅读资料
关于Python 编程的好书有许多。有些适合初学者, 如《Introduction to Computing and Programming in Python: A Multimedia Approach》[GE13] 和《Python Programming:An Introduction to Computer Science》[Zel03] ;有些适合于具有一定编程经验的读者,如《How to Think Like a Computer Scientist: Learning with Python》[DEM02],《Object-Oriented Programming in Python》[GL07] 和《Learning Python》[Lut13])。读者也可参考《Python Education Special Interest Group (EDU-SIG)》[Pyt11],即使用Python的教育者特别兴趣组。
Python 资源
读者掌握足够的Python 编程知识后,建议学习第二种编程语言。有很多语言可供选择,如大家熟知的C、Java、C# 和Ruby。Python 和这些语言属于同一类。但是,如果能学习一种需要不同思维方式的编程语言,如Racket、Erlang和Haskell,则可以成为一名更好的程序员。总之,强烈建议读者学习第二种编程语言。
3.读者能学到什么
《Python3.6编程实践指南——计算机科学入门》(原书第3版)将提供以下内容:
1)为读者展示如何开发和使用程序解决实际问题。多数例子来自科学和工程问题,但是其思想也适用于其他领域。
2)讲解Python 的核心特色。大多数编程语言都具有这些特色,因此,无论读者所学的下一种语言是什么,这些知识都会使读者获益。
3)讲解编程的思维方法。特别是,介绍如何将复杂问题分解为简单问题,如何将简单问题的解组合起来,从而创建完整的应用程序。
最后,介绍一些工具。有些工具可以帮助读者提高编程效率,有些工具有助于读者的应用程序解决更大规模的问题。
4.在线资源
《Python3.6编程实践指南——计算机科学入门》(原书第3版)的所有源代码、印刷错误、论坛、安装指引和习题解都可以在以下网站找到:http://pragprog.com/book/gwpy3/practical-programming。


序言

《Python3.6 编程实践指南—计算机科学入门》(原书第3版)是为初学者编写的教材。书中通过大量科学和工程的例子介绍了现代编程的基本思想和方法,内容涵盖常用数据类型及其基本操作,使用条件和循环控制的编程方法,函数的设计方法和函数调用过程等初学编程应该理解和掌握的基本知识。本书还介绍了一些Python 高级编程知识,包括查找和排序算法设计,面向对象的编程方法,程序的测试与调试,图形用户界面和数据库。

《Python3.6编程实践指南——计算机科学入门》(原书第3版)的突出特点是内容组织合理,讲解细致,对初学者理解编程中的重点和难点,掌握编程基本内容非常有帮助。比如,书中使用了一个简洁的内存模型,通过图示方式,对较难理解的变量和函数调用做了详细清晰的解释说明。又如,在第3章,作者提出一种设计函数的菜单,并通过多个例子演示,便于初学者掌握函数的设计原则和过程。对于算法的设计,作者通过由自然语言描述到Python 代码的逐步细化过程便于读者理解和掌握算法设计方法和编程方法。

《Python3.6编程实践指南——计算机科学入门》(原书第3版)的三位作者在编程教学领域积累了丰富的经验。作者Paul Gries 和Jennifer Campbell 在多伦多大学常年致力于编程的教学和研究,并多次获得教学奖。作者Jason Montojo是经验丰富的软件开发者,在指导学生编程方面也颇具经验。本书是三位作者多年教学、研究和实践的成果,全书对内容的组织、重点和难点的讲解都是经验的结晶,因此,本书特别适合作为初学者的教材,也可作为Python 语言使用者的参考书。

《Python3.6编程实践指南——计算机科学入门》(原书第3版)是由4位译者合作完成的。乔海燕翻译了第1~5 章,王烁程翻译了第6~9 章,李悫炜翻译了第10~13 章,曾烈康翻译了第14 ~17 章。限于译者水平,译文中难免出现疏漏和错误,欢迎大家批评指正!

译者

于广州番禺大学城


关于此书评价

但愿时光倒流,能把这本书送给10岁时开始学习编程的自己。相对于我在孩提时代尝试理解的那些干巴巴的编程图书,本书是如此吸引人、如此实用和容易理解。我喜欢作者的讲解方式:学生自己在Python解释器下键入代码的同时,能够阅读和理解代码的解释。

——Philip Guo 在线Python家教(www.pythontutor.com)创建者,加州大学圣地亚哥分校认知科学系助理教授


书如其名,本书是一本集清晰性、可读性和实用性为一体的编程入门图书。它不仅是学习编程技术的指南,而且是终身学习编程技术的基础:一个新颖、简单、易懂的可视化内存和程序运行模型,一个帮助读者编写高质量软件的设计菜单。

——Steven Wolfman 不列颠哥伦比亚大学计算机科学系教授


这本优秀的教材是作者多年教授大学生初学Python编程的经验结晶。书中内容组织自然,初学者常见错误和误解都得到明确的指导。每章的习题让感兴趣的学生能够进一步探索计算机科学和编程语言。

——Kathleen Freeman 俄勒冈大学计算机和信息科学系本科生教学主管


书摘内容

暂无.

Python3.6编程实践指南 计算机科学入门(原书第3版) [Practical Programming: An Introduction to Computer]最新最全的试读、书评、目录、简介信息由Python中文网整理提供。

上一篇:没有了

下一篇:Python语言程序设计基础