中学生可以这样学Python
作者: 董付国
出版社:清华大学出版社 2017年11月
简介:
本书以Python 3.5.x为主,同时兼容Python 3.4.x,并考虑了Python 3.6.x的部分新特性,重点介绍Python基本语法以及常用内置对象和标准库对象的用法。主要内容包括Python开发环境,Python基本数据类型、运算符与内置函数,常用的选择结构语法和应用,for循环与while循环,列表、元组、字典、集合和字符串等常用序列结构,函数基本用法,面向对象程序设计,解析算法、枚举算法、递推算法、递归算法、排序算法及查找算法的原理与Python实现,SQLite数据库及Python操作SQLite数据库的方法,大数据处理基础及Spark编程基础知识,以及通过电子时钟、猜数游戏、通讯录管理程序、图片浏览程序和温度单位转换这几个综合案例介绍Python的项目开发过程。本书适合作为中学生“信息技术”课程的配套阅读资料,也可作为Python入门参考书。
【目录】
目录
第1章Python概述1
1.1Python语言简介1
1.2常用的Python开发环境2
1.2.1IDLE2
1.2.2Eclipse PyDev3
1.2.3PAGE for Python5
1.3Python代码编写规范6
1.4安装扩展库8
1.5标准库与扩展库对象的导入和使用11
1.5.1导入整个模块11
1.5.2明确导入模块中的特定对象12
1.5.3一次导入特定模块中的所有对象12
1.6本章知识要点13
第2章Python编程基础14
2.1基本数据类型14
2.1.1常用内置对象14
2.1.2常量与变量15
2.1.3数字类型17〖1〗中学生可以这样学Python〖1〗目录2.1.4字符串19
2.1.5序列20
2.2运算符与表达式21
2.2.1算术运算符22
2.2.2关系运算符24
2.2.3成员测试运算符和同一性测试运算符25
2.2.4逻辑运算符27
2.2.5集合运算符28
2.3常用内置函数30
2.3.1基本输入输出函数33
2.3.2数字有关的函数35
2.3.3序列有关的函数38
2.3.4精彩例题分析与解答45
2.4常用标准库用法简介46
2.4.1数学模块math47
2.4.2*模块random49
2.4.3日期时间模块datetime50
2.4.4小海龟画图模块turtle51
2.4.5图形界面开发模块tkinter53
2.5本章知识要点54
第3章选择结构56
3.1单分支选择结构56
3.2双分支选择结构58
3.3多分支选择结构59
3.4选择结构的嵌套60
3.5pass语句62
3.6精彩例题分析与解答62
3.7本章知识要点64
第4章循环结构65
4.1for循环与while循环65
4.2break与continue语句66
4.3精彩例题分析与解答67
4.4本章知识要点75
第5章Python序列及应用76
5.1列表77
5.1.1列表创建与删除78
5.1.2列表元素访问79
5.1.3列表常用方法80
5.1.4列表对象支持的运算符84
5.1.5内置函数对列表的操作85
5.1.6精彩例题分析与解答86
5.2元组92
5.2.1元组创建与元素访问92
5.2.2元组与列表的异同点93
5.3字典95
5.3.1字典创建与删除96
5.3.2字典元素的访问96
5.3.3元素添加、修改与删除98
5.3.4精彩例题分析与解答99
5.4集合100
5.4.1集合对象创建与删除101
5.4.2集合操作与运算102
5.4.3精彩例题分析与解答104
5.5字符串106
5.5.1字符串编码格式简介106
5.5.2转义字符107
5.5.3字符串格式化109
5.5.4字符串常量111
5.5.5字符串对象的常用方法111
5.5.6精彩例题分析与解答120
5.6推导式124
5.6.1列表推导式124
5.6.2生成器推导式127
5.7序列解包128
5.8切片131
5.8.1使用切片获取部分列表、元组、字符串中的元素131
5.8.2使用切片对列表进行元素插入、删除、修改和替换操作133
5.9本章知识要点134
第6章函数136
6.1函数定义与调用136
6.2函数参数139
6.2.1默认值参数140
6.2.2关键参数142
6.3变量作用域143
6.4函数递归调用145
6.5lambda表达式146
6.6精彩例题分析与解答147
6.7本章知识要点151
第7章面向对象程序设计153
7.1面向对象程序设计简介153
7.2类的定义与实例化154
7.3数据成员与成员方法155
7.3.1私有成员与公有成员155
7.3.2数据成员156
7.3.3成员方法、类方法、静态方法157
7.4属性160
7.5继承163
7.6多态165
7.7精彩例题分析与解答166
7.8本章知识要点170
第8章常用算法的Python实现171
8.1解析算法案例分析171
8.2枚举算法案例分析176
8.3递推算法案例分析180
8.4递归算法案例分析183
8.5分治算法原理简介190
8.6排序算法案例分析190
8.7查找算法案例分析194
8.8本章知识要点196
第9章SQLite数据库编程基础197
9.1SQLite数据库简介197
9.2Python标准库sqlite3简介198
9.3常用SQL语句199
9.4精彩例题分析与解答201
9.5本章知识要点209
第10章大数据处理基础210
10.1大数据的基本概念与主要特征210
10.2大数据处理框架Spark与Python编程211
10.3精彩例题分析与解答216
10.4本章知识要点217
第11章综合案例设计与分析218
11.1GUI版电子时钟218
11.2GUI版猜数游戏221
11.3GUI版通讯录管理程序225
11.4GUI版图片浏览程序231
11.5GUI版温度单位转换程序234
11.6本章知识要点242
附录APython关键字清单243
附录B常用Python扩展库清单245
参考文献246
【免费在线读】
第5章Python序列及应用Python中常用的序列结构有列表、元组、字典、字符串、集合等(虽然有人并不主张把字典和集合看成序列,但这真的不重要),从是否有序这个角度可以分为有序序列和无序序列两大类,从是否可变来看则可以分为可变序列和不可变序列两大类,如图5?1所示。另外,生成器对象和range、map、enumerate、filter、zip等对象的某些用法也类似于序列,尽管这些对象更大的特点是惰性求值。列表、元组、字符串等有序序列以及range对象均支持双向索引,*个元素下标为0,第二个元素下标为1,以此类推;如果使用负数作为索引,则*后一个元素下标为-1,倒数第二个元素下标为-2,以此类推。可以使用负整数作为索引是Python有序序列的一大特色,熟练掌握和运用可以大幅度提高开发效率。图5?1Python序列分类示意图〖1〗中学生可以这样学Python〖1〗第5章Python序列及应用注意: 有人认为不应该把字典和集合看成Python序列,但这并不重要。虽然这两种类型与列表、元组、字符串有些区别,但也有很多相同的用法,放在一起讨论和比较也是合适的。5.1列表列表是包含若干元素的有序连续内存空间。在形式上,列表的所有元素放在一对中括号内,相邻元素之间使用逗号分隔。在Python中,同一个列表中元素的数据类型可以各不相同,列表中可以同时包含为整数、实数、字符串等基本类型的元素,也可以包含列表、元组、字典、集合以及其他任意对象,如果只有一对方括号而没有任何元素则表示空列表。下面几个都是合法的列表对象: 注意: 列表的功能非常强大,有人戏称列表是“打了激素的数组”。但是列表负担也比较重,开销很大,所以效率很低。在实际开发中,*好根据实际的问题选择一种合适的数据类型,要尽量避免使用列表,优先使用后面介绍的字典和集合。注意: 由于Python变量并不直接存储值,而是存储值的引用(或内存地址),因此列表中的元素在逻辑上是连续的而物理上并不一定是连续的。例如: >> x = \[1, 'a', \[3\]\]>>> id(x\[0\])1580377184>>> id(x\[1\])1737643593264>>> id(x\[2\])17376532837205.1.1列表创建与删除使用赋值运算符“=”直接将一个列表赋值给变量即可创建列表对象,例如: >> a_list = \['a', 'b', 'mpilgrim', 'z', 'example'\]>>> a_list = \[\] #创建空列表也可以使用list()函数把元组、range对象、字符串、字典、集合或其他可迭代对象转换为列表。需要注意的是,把字典转换为列表时默认是将字典的“键”转换为列表,而不是把字典的元素转换为列表,如果想把字典的元素转换为列表,需要使用字典对象的items()方法明确说明,当然也可以使用values()来明确说明要把字典的“值”转换为列表。>> x = list() #创建空列表>>> list((3,5,7,9,11))#将元组转换为列表\[3, 5, 7, 9, 11\]>>> list(range(1,10,2))#将range对象转换为列表\[1, 3, 5, 7, 9\]>>> list('hello world')#将字符串转换为列表\['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'\]>>> list({3,7,5})#将集合转换为列表\[3, 5, 7\]>>>list({'a':3, 'b':9, 'c':78})#将字典的"键"转换为列表\['a', 'c', 'b'\]>>> list({'a':3, 'b':9, 'c':78}.values())#将字典的"值"转换为列表\[3, 9, 78\]>>> list({'a':3, 'b':9, 'c':78}.items()) #将字典的"键:值"元素对转换为列表\[('b', 9), ('c', 78), ('a', 3)\]当一个列表不再使用时,可以使用del命令将其删除,这一点适用于所有类型的Python对象。>> x = \[1, 2, 3\]>>> del x#删除列表对象>>> x#对象删除后无法再访问,抛出异常NameError: name 'x' is not defined小提示: 为了节约篇幅,本书大部分位置略去了代码抛出的错误信息,只保留了实质性错误输出,完整的错误信息可以自行调试代码查看。5.1.2列表元素访问创建列表之后,可以使用整数作为下标来访问其中的元素,其中0表示第1个元素,1表示第2个元素,2表示第3个元素,以此类推;列表还支持使用负整数作为下标,其中-1表示*后1个元素,-2表示倒数第2个元素,-3表示倒数第3个元素,以此类推。列表对双向索引的支持如图5?2所示(以列表list('Python')为例)。>> x = list('Python')#创建列表对象>>> x\['P', 'y', 't', 'h', 'o', 'n'\]>>> x\[0\]#下标为0的元素,*个元素'P'>>> x\[-1\]#下标为-1的元素,*后一个元素'n'图5?2双向索引示意图小提示: 有时候负数做下标比正数做下标更方便,尤其是在列表切片操作中。