编辑推荐
《计算机科学丛书:Python语言程序设计》特色
以“基础先行”方法介绍基本程序设计概念和方法,帮助学生循序渐进地学习所有必需和重要的基本概念。
以“问题驱动”方法讲授程序设计技术,强调问题求解,而非语法。通过广泛的趣味性实例(涉及数学、自然科学、商业、金融、游戏、动画和多媒体领域)来激发学生的学习兴趣,为求解这些问题,适时地引入相关的语法和库。
可以灵活介绍GUI相关主题。第1~6章使用内置的Turtle图形模块,其余部分使用Tkinter,这两种工具都是简单、易学的程序设计教学工具。每章的开始都有GUI实例,每章末尾还有专门的GUI练习。
内容简介
《计算机科学丛书:Python语言程序设计》以问题驱动的方式对Python程序设计进行综合介绍。《计算机科学丛书:Python语言程序设计》共分三个部分,首先介绍基本程序设计技术以及数据类型、变量、常量、简单函数等内容,随后利用抽象、封装和多态性来了解面向对象程序设计,最后通过对数据结构和算法的讲解,循序渐进,掌握Python程序设计。书中引入实例解释基本概念,同时提供大量不同难度的编程题,帮助读者理解和巩固。《计算机科学丛书:Python语言程序设计》可作为高等院校相关专业的基础教材,也可作为Python语言及编程开发爱好者的参考资料。
目录
出版者的话
译者序
前言
第一部分程序设计基础
第1章计算机、程序和Python概述
1.1引言
1.2什么是计算机
1.2.1中央处理器
1.2.2比特和字节
1.2.3内存
1.2.4存储设备
1.2.5输入和输出设备
1.2.6通信设备
1.3程序设计语言
1.3.1机器语言
1.3.2汇编语言
1.3.3高级语言
1.4操作系统
1.4.1控制和管理系统行为
1.4.2调度和分配系统资源
1.4.3调度操作
1.5Python的历史
1.6开始学习Python
1.6.1启动Python
1.6.2创建Python源代码文件
1.6.3使用Python完成算术运算
1.7程序设计风格和文档
1.7.1恰当的注释和注释风格
1.7.2恰当的空格
1.8程序设计错误
1.8.1语法错误
1.8.2运行时错误
1.8.3逻辑错误
1.9开始学习图形化程序设计
1.9.1绘制图形并给图形添加颜色
1.9.2将笔移到任何位置
1.9.3绘制奥林匹克环标志
关键术语
本章总结
测试题
编程题
第2章基本程序设计
2.1引言
2.2编写一个简单的程序
2.3从控制台读取输入
2.4标识符
2.5变量、赋值语句和赋值表达式
2.6同时赋值
2.7定名常量
2.8数值数据类型和运算符
2.8.1运算符/、//和**
2.8.2运算符%
2.8.3科学记数法
2.9计算表达式和运算符优先级
2.10增强型赋值运算符
2.11类型转换和四舍五入
2.12实例研究:显示当前时间
2.13软件开发流程
2.14实例研究:计算距离
关键术语
本章总结
测试题
编程题
第3章数学函数、字符串和对象
3.1引言
3.2常见的Python函数
3.3字符串和字符
3.3.1ASCII码
3.3.2统一码
3.3.3函数ord和chr
3.3.4转义序列
3.3.5不换行打印
3.3.6函数str
3.3.7字符串连接操作
3.3.8从控制台读取字符串
3.4实例研究:最小数量的硬币
3.5对象和方法简介
3.6格式化数字和字符串
3.6.1格式化浮点数
3.6.2用科学记数法格式化
3.6.3格式化成百分数
3.6.4调整格式
3.6.5格式化整数
3.6.6格式化字符串
3.7绘制各种图形
3.8绘制带颜色和字体的图形
关键术语
本章总结
测试题
编程题
第4章选择
4.1引言
4.2布尔类型、数值和表达式
4.3产生随机数字
4.4if语句
4.5实例研究:猜生日
4.6双向if-else语句
4.7嵌套if和多向if-elif-else语句
4.8选择语句中的常见错误
4.9实例研究:计算身体质量指数
4.10实例研究:计算税款
4.11逻辑运算符
4.12实例研究:判定闰年
4.13实例研究:彩票
4.14条件表达式
4.15运算符的优先级和结合方向
4.16检测一个对象的位置
关键术语
本章总结
测试题
编程题
第5章循环
5.1引言
5.2while循环
5.2.1实例研究:猜数字
5.2.2循环设计策略
5.2.3实例研究:多道减法题测验
5.2.4根据用户确认控制循环
5.2.5使用哨兵值控制循环
5.2.6输入输出重定向
5.3for循环
5.4嵌套循环
5.5最小化数值错误
5.6实例研究
5.6.1问题:找出最大公约数
5.6.2问题:预测未来学费
5.6.3问题:蒙特卡罗模拟
5.7关键字break和continue
5.8实例研究:显示素数
5.9实例研究:随意行走
关键术语
本章总结
测试题
编程题
第6章函数
6.1引言
6.2定义一个函数
6.3调用一个函数
6.4带返回值或不带返回值的函数
6.5位置参数和关键字参数
6.6通过传引用来传递参数
6.7模块化代码
6.8实例研究:将十进制数转换为十六进制数
6.9变量的作用域
6.10默认参数
6.11返回多个值
6.12实例研究:生成随机ASCII码字符
6.13函数抽象和逐步求精
6.13.1自顶向下设计
6.13.2自顶向下和自底向上的实现
6.13.3实现细节
6.13.4逐步求精的优势
6.14实例研究:可重用图形函数
关键术语
本章总结
测试题
编程题
第二部分面向对象程序设计
第7章对象和类
7.1引言
7.2为对象定义类
7.2.1定义类
7.2.2构造对象
7.2.3访问对象成员
7.2.4self参数
7.2.5举例:使用类
7.3UML类图
7.4不变对象和可变对象
7.5隐藏数据域
7.6类的抽象与封装
7.7面向对象的思考
关键术语
本章总结
测试题
编程题
第8章更多字符串和特殊方法
8.1引言
8.2str类
8.2.1创建字符串
8.2.2处理字符串的函数
8.2.3下标运算符[]
8.2.4截取运算符[start:end]
8.2.5连接运算符+和复制运算符*
8.2.6in和notin运算符
8.2.7比较字符串
8.2.8迭代字符串
8.2.9测试字符串
8.2.10搜索子串
8.2.11转换字符串
8.2.12删除字符串中的空格
8.2.13格式化字符串
8.3实例研究:校验回文串
8.4实例研究:将十六进制数转换为十进制数
8.5运算符重载和特殊方法
8.6实例研究:Rational类
关键术语
本章总结
测试题
编程题
第9章使用Tkinter进行GUI程序设计
9.1引言
9.2开始使用Tkinter
9.3处理事件
9.4小构件类
9.5画布
9.6几何管理器
9.6.1网格管理器
9.6.2包管理器
9.6.3位置管理器
9.7实例研究:贷款计算器
9.8显示图像
9.9菜单
9.10弹出菜单
9.11鼠标、按键事件和绑定
9.12动画
9.13滚动条
9.14标准对话框
关键术语
本章总结
测试题
编程题
第10章列表
10.1引言
10.2列表基础
10.2.1创建列表
10.2.2列表是一种序列类型
10.2.3列表使用的函数
10.2.4下标运算符[]
10.2.5列表截取[start:end]
10.2.6+、*和in/notin运算符
10.2.7使用for循环遍历元素
10.2.8比较列表
10.2.9列表解析
10.2.10列表方法
10.2.11将字符串分成列表
10.2.12输入列表
10.2.13对列表移位
10.2.14简化代码
10.3实例研究:乐透数
10.4实例研究:一副扑克牌
10.5扑克牌图形用户界面
10.6复制列表
10.7将列表传递给函数
10.8从函数返回一个列表
10.9实例研究:统计每个字母的出现次数
10.10查找列表
10.10.1线性查找法
10.10.2二分查找法
10.11排序列表
10.11.1选择排序
10.11.2插入排序
10.12实例学习:弹球
关键术语
本章总结
测试题
编程题
第11章多维列表
11.1引言
11.2处理二维列表
11.2.1使用输入值初始化列表
11.2.2使用随机数初始化列表
11.2.3打印列表
11.2.4对所有元素求和
11.2.5按列求和
11.2.6找出和最大的行
11.2.7随意打乱
11.2.8排序
11.3将二维列表传递给函数
11.4问题:给多选题评分
11.5问题:找出距离最近的点对
11.6图形用户界面:找出距离最近的点对
11.7问题:数独
11.8实例研究:数独图形用户界面
11.9多维列表
11.9.1问题:每日温度和湿度
11.9.2问题:猜生日
关键术语
本章总结
测试题
编程题
第12章继承和多态
12.1引言
12.2父类和子类
12.3覆盖方法
12.4object类
12.5多态和动态绑定
12.6isinstance函数
12.7实例研究:可重用时钟
12.8类之间的关系
12.8.1关联
12.8.2聚合和组合
12.9实例研究:设计Course类
12.10为栈设计类
12.11实例研究:FigureCanvas类
关键术语
本章总结
测试题
编程题
第13章文件和异常处理
13.1引言
13.2文本输入和输出
13.2.1打开一个文件
13.2.2写入数据
13.2.3测试文件的存在性
13.2.4读数据
13.2.5从文件读取所有数据
13.2.6追加数据
13.2.7读写数值数据
13.3文件对话框
13.4实例研究:统计文件中的字符个数
13.5从网站上获取数据
13.6异常处理
13.7抛出异常
13.8使用对象处理异常
13.9定义自定制异常类
13.10使用Pickling进行二进制IO
13.10.1卸载和加载对象
13.10.2检测文件末尾
13.11实例研究:地址簿
关键术语
本章总结
测试题
编程题
第三部分数据结构和算法
第14章元组、集合和字典
14.1引言
14.2元组
14.3集合
14.3.1创建集合
14.3.2操作和访问集合
14.3.3子集和超集
14.3.4相等性测试
14.3.5集合运算
14.4比较集合和列表的性能
14.5实例研究:统计关键字
14.6字典
14.6.1创建一个字典
14.6.2添加、修改和获取值
14.6.3删除条目
14.6.4循环条目
14.6.5len函数
14.6.6检测一个关键字是否在字典中
14.6.7相等性检测
14.6.8字典方法
14.7实例研究:单词的出现次数
关键术语
本章总结
测试题
编程题
第15章递归
15.1引言
15.2实例研究:计算阶乘
15.3实例研究:计算斐波那契数
15.4使用递归解决问题
15.5递归辅助函数
15.5.1选择排序
15.5.2二分查找
15.6实例研究:求出目录的大小
15.7实例研究:汉诺塔
15.8实例研究:分形
15.9实例研究:八皇后
15.10递归和迭代
15.11尾递归
关键术语
本章总结
测试题
编程题
附录APython关键字
附录BASCII字符集
附录C数制系统
*第16章开发高效算法
*第17章排序
*第18章链表、栈、队列及优先队列
*第19章二分查找树
*第20章AVL树
*第21章哈希:实现字典与集合
*第22章图及其应用
*第23章加权图及其应用前言/序言
《计算机科学丛书:Python语言程序设计》假设你是一位先前没有任何程序设计经验的程序员新手。那么,什么是程序设计呢?程序设计是指使用程序设计语言编写程序以解决问题。不论你使用的是哪种程序设计语言,解决问题和程序设计的根本都是一致的。你可以使用任何一种像Python、Java、C++或C#这样的高级程序设计语言来学习程序设计。一旦知道如何使用其中一门语言编写程序,那么如何使用其他语言编写程序就很容易,因为编写程序的基本技能都是一样的。
那么,使用Python学习程序设计的优势在哪里呢?Python易于学习,且编程有趣。Python代码简单、短小,易读、直观,而且功能强大,这样对初学者而言,用它来介绍计算和解决问题是非常有效的。
鼓励初学者通过创建图形学习程序设计。使用Python学习程序设计的一个很大原因在于可以从一开始就使用图形来学习程序设计。我们在第1~6章使用Python内嵌的Turtle图形模块,它是一个介绍程序设计基本概念和技术的很好的教学工具。我们在第9章介绍Python内嵌的Tkinter,它是开发复杂图形用户界面以及学习面向对象程序设计的一个重要工具。Turtle和Tkinter都相当简单且易于使用。更重要的是,它们都是教授程序设计和面向对象程序设计基础的非常有价值的教学工具。
为了方便教师更灵活地使用《计算机科学丛书:Python语言程序设计》,我们在第1~6章的末尾会讲到Turtle,所以,可以将它们作为选讲内容跳过去。
《计算机科学丛书:Python语言程序设计》以问题驱动的方式讲授如何解决问题,这种方式的重点放在问题的解决而不是语法上。我们使用一些涉及范围很广的有趣例子来激发学生学习程序设计的兴趣。鉴于《计算机科学丛书:Python语言程序设计》的主线是解决问题,这里会介绍解决问题中用到的Python语法和库。为了支持问题驱动方式的程序设计教学,《计算机科学丛书:Python语言程序设计》提供了大量难易程度各异的问题来激发学生的兴趣。为适用于各个专业的学生,这些问题涉及很多应用领域,例如数学、科学、商业、金融管理、游戏、动画和多媒体等。
Python中的所有数据都是对象。我们从第3章开始介绍和使用对象,但是如何定义类将从第7章开始。《计算机科学丛书:Python语言程序设计》首先将重点放在基础上:在编写自定制类之前介绍像选择、循环和函数这样的基本程序设计概念和技术。
教授程序设计的最佳方式是通过实例,而学习程序设计的唯一方法就是通过实践。《计算机科学丛书:Python语言程序设计》用实例解释基本概念,同时提供了大量不同难度的习题供学生练习。我们的目标是使用大量有趣的例子和习题来教授学生如何解决问题以及如何进行程序设计。
教学特色《计算机科学丛书:Python语言程序设计》使用了下面的模块:
学习目标 列出学生应该学会的内容,这样在学完这章之后,学生能够判断自己是否达到这个目标。
引言 提出一个代表性问题,以便学生对该章内容有一个概括了解。
关键点 强调每节中的重要概念。
检查点 提供复习题帮助学生复习相关内容并评估掌握的程度。
问题 通过精心挑选,以一种容易掌握的形式教授问题求解和程序设计的概念。《计算机科学丛书:Python语言程序设计》使用许多短小的、简单的以及令人兴奋的例子来演示重要的想法。
关键术语 提供对本章重要术语的快速参考。
本章总结 回顾学生应该理解和记住的重要主题,帮助他们加强对该章所学关键概念的理解。
测试题 测试题是在线的,用于学生自我测试对程序设计概念和技术的掌握程度。
编程题 为学生提供应用新技巧的机会。题目的难度等级分为容易(无星号)、适度(*)、困难(**)或具有挑战性(***)。学习程序设计的秘诀就在于练习,练习,再练习。为了达到这个目标,《计算机科学丛书:Python语言程序设计》提供了大量的练习题。
注意、提示和警告 穿插在整《计算机科学丛书:Python语言程序设计》中,提供了有价值的建议以及程序开发要点。
注意:提供关于主题的附加信息并强化重要概念。
提示:教授好的程序设计风格和实践。
警告:帮助学生避免程序设计错误。
灵活的章节顺序图形是学习程序设计的一个非常有价值的教学工具。《计算机科学丛书:Python语言程序设计》在第1~6章使用Turtle图形,而在书中其他部分使用Tkinter。但是,教师可以根据需要跳过关于图形的章节或者以后再讨论。下图给出章节之间的相互关系。
注意:第16~23章是配套网站提供的附加章节。
第10章可以在第6章之后讲解。第14章可以在第10章之后讲解。
《计算机科学丛书:Python语言程序设计》的组织结构《计算机科学丛书:Python语言程序设计》共分三部分,循序渐进地介绍用Python语言进行程序设计的基本知识。前面的章节提供理解程序设计概念的基础知识,并通过简单实例和习题对学生进行指导,随后的章节逐步详细介绍Python程序设计,一直到开发复杂的应用程序。
第一部分:程序设计基础(第1~6章)第一部分是起点,为你学习程序设计做准备。你可以初步了解Python(第1章),并学习基本程序设计技术,包括数据类型、变量、常量、赋值、表达式、运算符、对象以及简单的函数和字符串操作(第2~3章),选择语句(第4章),循环(第5章),函数(第6章)。
第二部分:面向对象程序设计(第7~13章)这一部分介绍面向对象程序设计。Python是一种面向对象程序设计语言,它具有抽象、封装、继承和多态等特性,适合编写灵活、模块化和可重用的软件。你将学习面向对象程序设计(第7~8章),使用Tkinter进行GUI程序设计(第9章),列表(第10章),多维列表(第11章),继承、多态和类设计(第12章),以及文件和异常处理(第13章)。
第三部分:数据结构和算法(第14~15章和附加章节第16~23章)本部分介绍典型数据结构课程的主要主题。第14章介绍Python内嵌的数据结构:元组、集合和字典。第15章介绍用递归来编写函数以解决内在递归问题。第16~23章是配套网站的附加章节。第16章介绍算法效率以及开发高效算法的常用技术。第17章讨论经典的排序算法。第18章介绍如何实现链表、队列以及优先队列。第19章介绍二分查找树。第20章介绍AVL树。第21章介绍哈希技术。第22和23章涵盖图算法及其应用。