内容简介
本书是以Python为编程语言、面向计算机科学教育中的程序设计基础课程与编程初学者的入门教材和自学读物。本书以Python为工具,详细讨论了与编程有关的各方面问题,介绍了从初级到高级的许多重要编程技术。本书特别强调编程中的分析和思考、问题的严格化和逐步分解、语言结构的正确选择、程序结构的良好组织,以及程序的正确和安全。书中通过大量实例及其开发过程,展示了好程序的特征和正确的编程工作方法。此外,书中还介绍Python语言的重要细节和工作原理,各章附有大量习题。本书既可以作为高校程序设计相关课程的教材,也适合希望学习Python语言和编程技术的读者阅读和参考。
目录
前言
第1章 程序设计和Python 1
1.1 计算机和程序1
1.1.1 “是什么”和“怎样做”的知识1
1.1.2 计算和程序3
1.1.3 编程语言7
1.2 Python语言简介10
1.2.1 Python语言的发展和应用10
1.2.2 Python系统和IDLE编程环境13
1.3 程序开发15
1.3.1 程序开发过程15
1.3.2 程序错误16
1.3.3 从问题到程序19
练习22
第2章 计算和编程初步 23
2.1 数值表达式和算术23
2.1.1 整数计算23
2.1.2 浮点数和复数27
2.2 数据对象、计算和类型29
2.2.1 对象和类型29
2.2.2 混合类型计算和类型转换30
2.2.3 数值类型和计算的简单总结31
2.3 内置函数和数学函数包32
2.3.1 函数及其使用33
2.3.2 处理数值的内置函数33
2.3.3 数学函数包34
2.4 字符串35
2.4.1 字符串和字符串类型35
2.4.2 字符串操作36
2.5 标识符、变量和赋值38
2.5.1 变量、名字和值38
2.5.2 简单顺序计算40
2.6 简单脚本程序41
2.6.1 脚本的编辑和执行41
2.6.2 程序和输入43
2.7 判断和条件控制45
2.7.1 条件判断和逻辑表达式45
2.7.2 if语句(条件语句)46
2.7.3 编程实例48
2.8 重复计算和循环49
2.8.1 重复计算50
2.8.2 for语句和重复计算51
2.8.3 while语句和迭代53
2.8.4 循环控制56
2.9 计算的抽象和函数56
2.9.1 计算的控制和抽象56
2.9.2 计算的抽象:函数57
2.9.3 函数定义和使用实例60
2.10 若干Python机制及其他62
2.10.1 已讨论的Python机制62
2.10.2 若干Python机制62
2.10.3 Python解释器64
2.11 补充材料64
2.11.1 语言细节65
2.11.2 编程技术70
练习71
第3章 基本编程技术 77
3.1 循环程序设计77
3.1.1 循环的需求和问题78
3.1.2 常见循环形式80
3.1.3 输入循环86
3.2 递归89
3.2.1 递归定义的函数89
3.2.2 乘幂的计算90
3.2.3 循环和递归91
3.2.4 斐波那契数列的计算92
3.2.5 最大公约数97
3.2.6 不容易用循环求解的递归问题100
3.2.7 更复杂的递归情况103
3.3 程序终止性103
3.3.1 调和级数的部分和104
3.3.2 程序终止性不可判定104
3.4 定义函数105
3.4.1 为什么定义函数105
3.4.2 学习定义函数108
3.4.3 函数:两种观点及其联系111
3.4.4 通用和专用的方法117
练习120
第4章 函数和程序结构 124
4.1 作用域、环境和状态124
4.1.1 作用域与函数定义124
4.1.2 环境和状态126
4.1.3 程序执行中的环境变化129
4.1.4 模块和环境133
4.2 函数定义和函数调用135
4.2.1 函数定义的结构135
4.2.2 函数调用中的问题140
4.2.3 带默认值形参和关键字实参143
4.3 编程框架和高阶函数145
4.3.1 编程框架和函数的函数参数145
4.3.2 匿名函数和lambda表达式149
4.3.3 随机数和模拟153
4.3.4 高阶函数155
4.4 程序的测试和调试156
4.4.1 测试157
4.4.2 排除程序里的错误162
4.4.3 使用IDLE的调试功能163
4.4.4 程序测试问题165
4.5 补充材料166
4.5.1 语言细节166
4.5.2 编程技术和规则169
练习169
第5章 数据的组织和操作 172
5.1 组合数据对象172
5.2 表173
5.2.1 简介174
5.2.2 表的构造和操作175
5.2.3 编程实例178
5.3 元组183
5.3.1 基础183
5.3.2 有理数程序包185
5.3.3 打包和拆分187
5.4 序列、不变对象和可变对象189
5.4.1 序列和序列操作189
5.4.2 描述式194
5.4.3 对象、变动和变量关联196
5.4.4 一些程序实例202
5.4.5 表处理204
5.5 字符串及其格式化生成209
5.5.1 字符串操作209
5.5.2 字符串的格式化213
5.5.3 一个简单的交互式计算器216
5.6 字典217
5.6.1 概念和操作218
5.6.2 字典与函数参数221
5.6.3 字典的应用实例222
5.7 集合224
5.7.1 概念和操作224
5.7.2 集合操作226
5.8 程序实例228
5.8.1 多项式计算228
5.8.2 另一个筛法实例231
5.9 若干语言和技术问题232
5.9.1 逻辑类型和逻辑判断232
5.9.2 函数参数的总结235
5.10 补充材料236
5.10.1 语言细节236
5.10.2 编程技术240
练习241
第6章 高级编程技术 248
6.1 文件:使用外存数据248
6.1.1 文件和输入/输出249
6.1.2 Python的文件功能251
6.1.3 文件处理程序实例256
6.2 生成器函数和闭包261
6.2.1 生成器函数261
6.2.2 闭包和装饰器265
6.2.3 编程实例274
6.3 异常和异常处理276
6.3.1 运行中的错误277
6.3.2 异常和异常处理279
6.3.3 异常处理的结构和技术282
6.3.4 try结构和raise语句详述284
6.3.5 预定义异常287
6.3.6 用异常作为控制机制288
6.4 数据处理和持久性291
6.4.1 文本生成291
6.4.2 数据记录和信息管理295
6.4.3 数据持久性300
6.4.4 with语句302
6.5 Python程序的几个问题304
6.5.1 Python程序及其运行304
6.5.2 程序格式307
6.5.3 怎样阅读Python手册308
6.6 补充材料309
6.6.1 语言细节309
6.6.2 编程技术313
练习315
第7章 数据抽象和面向对象编程 320
7.1 数据抽象、类和自定义类型320
7.1.1 类型和数据组合321
7.1.2 对象、类和类型323
7.2 Python的类和对象325
7.2.1 对象和操作325
7.2.2 类定义326
7.2.3 几点说明332
7.2.4 编程实例335
7.3 继承339
7.3.1 继承、基类和派生类340
7.3.2 编程实例344
7.3.3 多继承348
7.3.4 异常和类349
7.4 实例:学校人事管理350
7.4.1 概念分层和基础人员类350
7.4.2 具体人员类的设计和实现355
7.4.3 讨论358
7.5 特殊方法名和特殊功能的类359
7.5.1 容器类和迭代器359
*7.5.2 上下文管理器和with语句363
7.5.3 几个特殊方法名364
7.6 补充材料365
*7.6.1 Python类、对象和方法365
7.6.2 面向对象的技术和方法371
7.6.3 总结373
练习374
第8章 其他编程问题 377
8.1 图形用户界面377
8.1.1 人机界面的问题377
8.1.2 标准库包tkinter和图形用户界面380
*8.1.3 tkinter的ttk包400
8.1.4 GUI的简单应用和问题402
8.1.5 应用程序的GUI设计和实现404
8.1.6 总结和讨论412
8.2 并发程序设计414
8.2.1 并发程序415
8.2.2 Python并发库threading包418
8.2.3 定义自己的线程类422
8.2.4 并发程序的一些问题424
8.2.5 线程间通信和queue包431
8.2.6 一个GUI并发程序实例433
8.2.7 总结和讨论436
练习438
附录A Python语言速查 440
附录B 标准函数 444
附录C 书中使用的几个标准库包 448
附录D IDLE开发环境 449
参考文献及进一步阅读资料 452
前言/序言
计算机诞生至今不过六七十年,但它已经改变了世界,改变了每个人的生活。人们每天都在与计算机交流(如智能手机),各领域专业人员的大量日常工作都需要使用计算机,从事与计算机相关工作的人们已经发展为社会上最大的专业技术社团。计算机的研究和应用、互联网和其他相关领域,还在不断呼唤大量熟悉计算机的专业开发人才。计算机科学技术的开发和应用能力已被广泛认为是国家竞争力的重要组成部分。因此,学习计算机科学技术知识,不仅是社会发展的需要,而且已成为个人的重要职业竞争力。然而,要深入理解计算和计算机,使其成为得心应手的工具,就必须学习编程。
近年来,Python语言的良好特征已经得到学界和业界的广泛认可,被世界上许多知名大学选作计算机科学教育的第一门语言,也被很多企业和实际项目作为开发语言。这些发展情况,使越来越多的人有了学习Python的兴趣和需要。
本书源自作者讲授基于Python的编程课程的经验,又经过认真整理,目标是提供一条清晰易行的学习路径。本书的结构和内容力图反映编程的本质,可以作为高校计算机基础课程教材,也适合希望学习Python语言和编程技术的读者阅读和参考。本书书名反映了作者对编程的基本认识:编程是从要解决的问题开始,最终得到解决问题的程序的过程。要学好编程,就要努力去理解这个过程,还必须反复实践。
编程就是为了指挥计算机(而不是我们自己),通过一个自动计算过程(而不是人的操作)去解决问题。为了指挥计算机工作,我们需要理解计算机,理解计算过程,理解指挥计算机完成计算的途径和方法。还需要一种计算机能处理的表达方式,也就是编程语言(或称程序设计语言,本书中用Python),用于说明计算机应该怎样工作。
程序是人写出的一段文字,表达的是要求计算机完成的一个计算过程。完成编程工作需要多方面的理解。首先需要理解面对的问题:它究竟是什么、要求做什么、可能用什么方法和计算过程去解决?要理解自己写出的程序,理解它描述的计算过程。最后的理解也非常重要:理解两者之间的关系,即自己的程序是否正确解决了相应的问题?没有对问题和程序的深入思考和理解,就不可能开发出好的、功能正确的程序。
学习编程时必须关注两方面的问题:如何从一个解决问题的需求出发,逐步开发出一个计算过程;如何使用编程语言(如Python)正确地写出解决问题的程序,描述(实现)这个计算过程。本书的做法是提出一个个问题,从简单到复杂,讨论从它们出发的程序开发过程:分析问题的细节,设法将其严格化,提出可能的解决方案,再经分解和设计,以及随后的编码和调试,最终开发出一个程序。完成了一个程序,常常不是工作的结束,还需要回过头去考察这个程序,分析其优点和缺点,研究改进或变化的可能性。这样的程序开发过程和其中的分析、思考、选择、决策等,反映了编程工作的本质和正确工作方法。当然,考虑到读者的经验积累,较前章节中的讨论包含了更多细节,后面逐渐简化,可能只关注工作中的一些要点。但是实际上,对任何一个问题,无论简单或复杂,上述的思考和工作过程都会再一次重复。只不过随着读者的经验积累,一些问题的分析和决策变得愈发自然顺畅,以至于其明显性逐步减弱。这种趋势也反映了读者的进步。
在阅读本书的过程中,建议读者去亲身体验程序的开发过程:看到一个问题之后,最好先不去看书中的分析和解决方法,而是自己思考,设法解决这个问题,完成之后再与书中的做法比较。如果两种做法不同,就应该分析它们各自的长处和短处。采用这样的方法学习本书(和编程),读者将不再是被动的接受者,而是主动参与者。
实际上,对每个问题,都可能有很多(理论上是无穷多)不同解决方法,对不同方法和设计的比较、选择和决策,也是编程工作中最重要的内容。对一个具体问题,总可能做出很多正确程序。如果问题稍微复杂,常能做出一组程序,其中任何一个都不比别的程序“更好”。这些情况说明,在编程学习中,并没有必须背诵的标准答案。当然,另一方面,作者也希望通过书中实例,反映良好的编程工作和好程序的特征。书中程序都由作者开发(其间也参考了许多材料),并经过仔细修改和运行试验。程序的格式符合Python社团的考虑,结构良好,实现方法清晰简洁,可以作为读者参考的范例。
编程语言是编程的工具,也是人与计算机交流的工具。它既要反映思维的特点,使人易于使用,也要反映计算机的特点,使计算机能按它写出的程序高效工作。Python被广泛认为是一种比较适合初学者的语言,其设计较好地反映了计算机和编程的性质和特点,具有比较平滑的学习曲线。最简单的Python程序可以看作数学和算术的自然延续,可以方便地运行,立刻看到结果(或效果)。初学者可以从这里开始一步步深入,在解决越来越复杂的问题的过程中,逐渐领悟编程和计算的性质和本质。另一方面,Python也支持许多高级编程概念,从高阶函数、生成器函数,到复杂数据对象的描述式、面向对象的编程等,反映了现代编程技术和需求的发展。本书中详细介绍了这些机制和
从问题到程序 用Python学编程和计算 电子书 下载 mobi epub pdf txt
评分
☆☆☆☆☆
裘老的书质量还是不错滴,适合Python 3初学者。
评分
☆☆☆☆☆
我在京东上书买了不少啊,为了提升自己能力,以后能挣大钱,我拼了。
评分
☆☆☆☆☆
好。。。。...
评分
☆☆☆☆☆
我在京东上书买了不少啊,为了提升自己能力,以后能挣大钱,我拼了。
评分
☆☆☆☆☆
好。。。。...
评分
☆☆☆☆☆
好书,收获大,期待下次购物。
评分
☆☆☆☆☆
是我见过的最好的写python的书,关键是给了不少语言编程的思想启发
评分
☆☆☆☆☆
我在京东上书买了不少啊,为了提升自己能力,以后能挣大钱,我拼了。
评分
☆☆☆☆☆
我在京东上书买了不少啊,为了提升自己能力,以后能挣大钱,我拼了。