Python可以这样学pdf

图书网 2018年10月18日23:06:4423.9K1

信息量大、案例丰富、实用性强。全书包含近200个案例和上千段代码,涉及Python基本语法和数据类型,以及GUI、网络应用、数据库、密码学、科学计算与可视化、大数据、图形图像处理等多个领域的开发,书中一些代码进行简单拼凑就可以满足实际工作中需要的很多功能。

深度与广度兼顾。剖析Python编程模式,通过小提示、小技巧、注意、拓展知识等形式适当介绍标准库的工作原理、内置函数的高级用法以及代码优化和安全编程知识,同时还补充了很多扩展库的小应用,满足不同层次读者需要。

语言轻松愉快,寓教于乐。以Python知识和应用为主线,偶尔穿插一点太极拳论、道德经、易经、古诗词和其他一些文学作品中的名言名句和小故事,部分题目还给出了非常幽默的答案。

注释量大。书中几乎每段重要代码都配有相关的注释,让读者能够在最短时间内理解代码的编写思路和要点,大幅度缩短阅读和学习时间。

Python可以这样学 内容简介

《Python可以这样学》共分16章,对Python内部工作原理进行了一定深度的剖析,99%以上的案例代码使用Python 3.5.1实现,也适用于Python 3.4.x(除少数几个新特性之外)和*新版本Python 3.5.2以及Python 3.6.0,极个别案例使用Python 2.7.11实现(同样适用于其他版本Python 2.7.x,包括*新的Python2.7.12),适当介绍了Python代码优化、系统编程和安全编程的有关知识,满足不同层次读者的需要。另外,书中通过小提示、小技巧、注意拓展知识等形式介绍了更多的内容,全部内容远比章节目录所显示的要多,需要认真阅读才能真正领会其中的奥妙。

本书适合作为Python程序员的开发指南,也可以作为高等院校计算机专业、软件工程专业等专业的Python教材,还可以作为Python爱好者的指导用书。

Python可以这样学 目录

第1章Python基础1

1.1Python是一种什么样的语言1

1.2Python开发环境2

1.2.1百家争鸣的繁荣景象2

1.2.2IDLE简单使用6

1.3变量、运算符与表达式9

1.3.1Python变量与内置数据类型9

1.3.2常用内置函数15

1.3.3运算符与表达式21

1.3.4人机对话基本接口25

1.4模块安装与使用28

1.4.1安装Python扩展库28

1.4.2模块导入与使用30

1.4.3编写自己的模块和包32

第2章Python序列35

2.1列表与列表推导式36

2.1.1列表创建与删除36

2.1.2列表常用方法38

2.1.3列表推导式46

2.1.4切片50

2.2元组与生成器推导式54

2.2.1元组54

2.2.2生成器推导式55

2.3字典57

2.3.1字典创建和元素添加、修改与删除57

2.3.2访问字典对象的数据59

2.3.3案例精选61

2.4集合63[1]〖2〗Python可以这样学[1]目录〖2〗2.4.1集合基础知识63

2.4.2集合操作与运算64

2.4.3案例精选67

2.5序列解包69

第3章程序控制结构与函数设计71

3.1选择结构71

3.1.1条件表达式71

3.1.2选择结构的几种形式73

3.1.3案例精选79

3.2循环结构82

3.2.1for循环与while循环的基本语法82

3.2.2break与continue语句83

3.2.3循环代码优化技巧84

3.2.4案例精选86

3.3函数设计与使用90

3.3.1基本语法91

3.3.2函数参数不得不说的几件事94

3.3.3变量作用域99

3.3.4lambda表达式102

3.3.5案例精选104

第4章面向对象程序设计122

4.1基础知识122

4.1.1类的定义与使用122

4.1.2私有成员与公有成员123

4.1.3数据成员125

4.1.4方法126

4.1.5属性129

4.1.6继承131

4.1.7特殊方法与运算符重载134

4.2案例精选135

4.2.1自定义数组135

4.2.2自定义矩阵141

4.2.3自定义队列147

4.2.4自定义栈151

4.2.5自定义二叉树154

4.2.6自定义有向图157

4.2.7自定义集合158

第5章字符串与正则表达式165

5.1字符串165

5.1.1字符串格式化的两种形式168

5.1.2字符串常用方法171

5.1.3案例精选186

5.2正则表达式190

5.2.1正则表达式语法与子模式扩展语法190

5.2.2re模块方法与正则表达式对象193

5.2.3案例精选199

第6章文件与文件夹操作206

6.1文件对象常用方法与属性207

6.2文本文件操作案例精选209

6.3二进制文件操作案例精选217

6.3.1使用pickle模块读写二进制文件217

6.3.2使用struct模块读写二进制文件219

6.3.3使用shelve模块操作二进制文件220

6.3.4使用marshal模块操作二进制文件220

6.4文件与文件夹操作221

6.4.1标准库os、os.path与shutil简介221

6.4.2案例精选227

第7章异常处理结构、代码测试与调试252

7.1异常处理结构252

7.1.1异常是什么252

7.1.2Python内置异常类层次结构254

7.1.3常见异常处理结构形式255

7.2代码测试262

7.2.1doctest263

7.2.2单元测试264

7.3代码调试270

7.3.1使用IDLE调试270

7.3.2使用pdb调试273

阶段性寄语278

第8章数据库应用开发279

8.1使用Python操作SQLite数据库279

8.1.1Connection对象280

8.1.2Cursor对象281

8.1.3Row对象284

8.2使用Python操作其他关系型数据库285

8.2.1操作Access数据库285

8.2.2操作MS SQL Server数据库286

8.2.3操作MySQL数据库288

8.3操作MongoDB数据库290

第9章网络应用开发293

9.1计算机网络基础知识293

9.2Socket编程295

9.2.1UDP编程296

9.2.2TCP编程298

9.2.3网络嗅探器300

9.2.4多进程端口扫描器302

9.2.5代理服务器端口映射功能的实现305

9.2.6自己编写FTP通信软件308

9.3域名解析与网页爬虫313

9.3.1网页内容读取与域名分析313

9.3.2网页爬虫315

9.3.3scrapy框架316

9.3.4BeautifulSoup4318

9.4网站开发323

9.4.1使用IIS运行Python CGI程序323

9.4.2Python在ASP.NET中的应用325

9.4.3Flask框架简单应用327

9.4.4django框架简单应用328

第10章多线程与多进程333

10.1多线程编程334

10.1.1线程创建与管理336

10.1.2线程同步技术339

10.2多进程编程346

10.2.1进程创建与管理347

10.2.2进程间数据交换347

10.2.3进程同步技术350

第11章大数据处理351

11.1大数据简介351

11.2MapReduce框架352

11.3Spark应用开发356

第12章图形编程与图像处理361

12.1图形编程361

12.1.1绘制三维图形361

12.1.2绘制三次贝塞尔曲线364

12.1.3纹理映射365

12.1.4响应键盘事件368

12.1.5光照模型369

12.2图像处理372

12.2.1pillow模块基本用法372

12.2.2计算椭圆中心375

12.2.3动态生成比例分配图376

12.2.4生成验证码图片377

12.2.5gif动态图像分离与生成379

12.2.6材质贴图380

12.2.7图像融合381

12.2.8棋盘纹理生成383

第13章数据分析与科学计算可视化384

13.1扩展库numpy简介384

13.2科学计算扩展库scipy393

13.2.1数学、物理常用常数与单位模块constants394

13.2.2特殊函数模块special395

13.2.3信号处理模块signal395

13.2.4图像处理模块ndimage397

13.3扩展库pandas简介401

13.4统计分析标准库statistics用法简介405

13.5matplotlib407

13.5.1绘制正弦曲线408

13.5.2绘制散点图408

13.5.3绘制饼状图410

13.5.4绘制带有中文标签和图例的图410

13.5.5绘制图例标签中带有公式的图411

13.5.6使用pyplot绘制,多个图形单独显示412

13.5.7绘制三维参数曲线413

13.5.8绘制三维图形414

13.5.9使用指令绘制自定义图形416

13.5.10在tkinter中使用matplotlib417

13.5.11使用matplotlib提供的组件实现交互式图形显示419

13.5.12根据实时数据动态更新图形421

13.5.13使用Slider组件调整曲线参数422

第14章密码学编程425

14.1经典密码算法425

14.1.1恺撒密码算法425

14.1.2维吉尼亚密码427

14.1.3换位密码算法428

14.2安全哈希算法429

14.3对称密钥密码算法DES和AES432

14.4非对称密钥密码算法RSA与数字签名算法DSA433

14.4.1RSA433

14.4.2DSA435

第15章tkinter编程精彩案例436

15.1用户登录界面436

15.2选择类组件应用438

15.3简单文本编辑器441

15.4简单画图程序445

15.5电子时钟449

15.6简单动画451

15.7多窗口编程454

15.8屏幕任意区域截图456

15.9音乐播放器458

15.10远程桌面监控系统462

第16章课堂教学管理系统设计与实现466

16.1功能简介466

16.1.1教师端功能466

16.1.2学生端功能467

16.2数据库设计468

16.3系统总框架与通用功能设计469

16.4数据导入功能473

16.4.1学生名单导入473

16.4.2题库导入473

16.5点名与加分功能475

16.5.1在线点名475

16.5.2离线点名与加分477

16.6随机提问功能480

16.7在线收作业功能482

16.7.1学生端482

16.7.2教师端483

16.8在线自测与在线考试功能485

16.8.1学生端486

16.8.2教师端488

16.9信息查看功能490

16.10数据导出功能492

16.11其他辅助功能493

16.11.1防作弊功能493

16.11.2服务器自动发现功能493

16.11.3Word版试卷生成功能494

结束语496

附录A本书中例题清单497

附录B本书中插图清单503

附录C本书中表格清单507

附录D本书中拓展知识摘要清单508

参考文献513

Python可以这样学 精彩文摘

第3章程序控制结构与函数设计

3.1选 择 结 构

生活中处处充满了选择: 如果周末不下雨我就约朋友去爬山,否则就去教学楼大厅里打太极拳;如果某个同学平时学习很认真但是期末考试前确实因为临时有事耽误了复习而没有考好,只要差得不太多我也一样给打及格;去市场买菜的时候比较一下,哪家的菜又好又便宜就买哪家的;诸如此类,我们时刻都在根据实际条件做出这样或那样的选择。编写程序也是如此,当某个条件得到满足时就去做特定的事情,否则就做另一件事情,这就是选择结构。

3.1.1条件表达式

在选择结构和循环结构中,都要根据条件表达式的值来确定下一步的执行流程。条件表达式的值只要不是False、0(或0.0、0j等)、空值None、空列表、空元组、空集合、空字典、空字符串、空range对象或其他空迭代对象,Python解释器均认为与True等价。从这个意义上来讲,所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。例如: >>> if 3:#使用整数作为条件表达式

print(5)

5

>>> a=\[1, 2, 3\]

>>> if a:#使用列表作为条件表达式

print(a)

\[1, 2, 3\]

>>> a=\[\]

>>> if a:

print(a)

else:

print('empty')

empty

>>> i=s=0

>>> while i <= 10:#使用关系表达式作为条件表达式s += i

i += 1

>>> print(s)

55

>>> i=s=0

>>> while True:#使用常量True作为条件表达式

s += i

i += 1

if i>10:#符合特定条件时使用break语句退出循环

break

>>> print(s)

55

>>> s=0

>>> for i in range(0, 11, 1):#遍历序列元素

s += i

>>> print(s)

55[1]〖2〗Python可以这样学[1]第3章程序控制结构与函数设计〖2〗关于表达式和运算符的详细内容在1.3.3节中已有介绍,这里不再赘述,只重点介绍一下比较特殊的几个运算符。首先是关系运算符,与很多语言不同的是,在Python中的关系运算符可以连续使用,例如:>>> print(1<2<3)

True

>>> print(1<2>3)

False

>>> print(1<3>2)

True在Python中,条件表达式中不允许使用赋值运算符“=”,避免了其他语言中误将关系运算符“==”写作赋值运算符“=”带来的麻烦,例如,下面的代码在条件表达式中使用赋值运算符“=”将抛出异常,提示语法错误。>>> if a=3:#条件表达式中不允许使用赋值运算符

SyntaxError: invalid syntax

>>> if(a=3)and(b=4):

SyntaxError: invalid syntax比较特殊的运算符还有逻辑运算符and和or,这两个运算符具有短路求值或惰性求值的特点,简单地说,就是只计算必须计算的表达式的值。以and为例,对于表达式“表达式1 and 表达式2”而言,如果“表达式1”的值为False或其他等价值时,不论“表达式2”的值是什么,整个表达式的值都是False,此时“表达式2”的值无论是什么都不影响整个表达式的值,因此将不会被计算,从而减少不必要的计算和判断。另外,Python中的逻辑运算符在某些方面和其他语言也有所不同,例如: >>> 3 and 5

5

>>> 3 or 5

3

>>> 0 and 5

0

>>> 0 or 5

5

>>> not 3

False

>>> not 0

True下面的函数使用指定的分隔符把多个字符串连接成一个字符串,如果用户没有指定分隔符则使用逗号。>>> def Join(chList, sep=None):

return(sep or ',').join(chList)#注意:参数sep不是字符串时会抛出异常

>>> chTest=\['1', '2', '3', '4', '5'\]

>>> Join(chTest)

'1,2,3,4,5'

>>> Join(chTest, ':')

'1:2:3:4:5'

>>> Join(chTest, ' ')

'1 2 3 4 5'当然,也可以把上面的函数直接定义为下面带有默认值参数的形式: >>> def Join(chList, sep=','):

return sep.join(chList)小技巧: 在设计包含多个条件的条件表达式时,如果能够大概预测不同条件失败的概率,并将多个条件根据and和or运算符的短路求值特性来组织顺序,可以大幅度提高程序运行效率,减少不必要的计算,这也属于代码优化的内容。

拓展知识: 逻辑运算符与常见电路连接方式的相似之处。大家应该都学过高中物理,还记得并联电路、串联电路、短路这样的概念吗?可以做个简单类比,or运算符类似于并联电路,只要有一个开关是通的那么灯就是亮的;and运算符类似于串联电路,必须所有开关是通的那么灯才是亮的;not运算符类似于短路电路,如果开关通了那么灯就灭了,如图31所示。

图31逻辑运算符与几种电路的类比关系

3.1.2选择结构的几种形式

选择结构通过判断某些特定条件是否满足来决定下一步的执行流程,是非常重要的控制结构。常见的有单分支选择结构、双分支选择结构、多分支选择结构以及嵌套的分支结构,形式比较灵活多变,具体使用哪一种最终还是取决于要实现的业务逻辑。循环结构和异常处理结构中也可以带有else子句,也可以看作是特殊形式的选择结构。

1. 单分支选择结构

单分支选择结构是最简单的一种形式,其语法如下所示,其中表达式后面的冒号“:”是不可缺少的,表示一个语句块的开始,后面几种其他形式的选择结构和循环结构中的冒号也是必须要有的。图32单分支选择结构

if 表达式:

语句块当表达式值为True或其他等价值时,表示条件满足,语句块将被执行,否则该语句块将不被执行,继续执行后面的代码(如果有),如图32所示。

下面的代码简单演示了单分支选择结构的用法: x=input('Input two numbers:')

a, b=map(int, x.split())

if a>b:

a, b=b, a#序列解包,交换两个变量的值

print(a, b)注意: 在Python中,代码的缩进非常重要,缩进是体现代码逻辑关系的重要方式,同一个代码块必须保证相同的缩进量。有的老师让学生学习Python的原因之一就是Python对代码排版或布局的严格要求可以培养学生严谨的习惯。而实际上,只要遵循一定的约定,Python代码的排版是可以降低要求的,例如下面的代码: >>> if 3>2: print('ok')#如果语句较短,可以直接写在分支语句后面

ok

>>> if True:print(3);print(5)#在一行写多个语句,使用分号分隔

3

5小提示: 在上面代码中,“a, b=b, a”是Python序列解包的用法,用来交换两个变量的值,等价于C语言的如下3条代码(假设变量已经声明并且类型正确),关于序列解包更多内容请参考2.5节。c=a;

a=b;

b=c;2. 双分支选择结构

双分支选择结构的语法为if 表达式:

语句块1

else:

语句块2当表达式值为True或其他等价值时,执行语句块1,否则执行语句块2,如图33所示。

图33双分支选择结构

下面的代码演示了双分支选择结构的用法: >>> chTest=\['1', '2', '3', '4', '5'\]

>>> if chTest:

print(chTest)

else:

print('Empty')

\['1', '2', '3', '4', '5'\]拓展知识: Python还提供了一个三元运算符,可以实现与选择结构相似的效果。语法为value1 if condition else value2当条件表达式condition的值与True等价时,表达式的值为value1,否则表达式的值为value2。另外,value1和value2本身也可以是复杂表达式,也可以包含函数调用。下面的代码演示了上面的表达式的用法,可以看出,这个结构的表达式也具有惰性求值的特点。>>> a=5

>>> print(6)if a>3 else print(5)

6

>>> print(6 if a>3 else 5)#注意,虽然结果与上一行代码一样,但代码含义不同

6

>>> b=6 if a>13 else 9#赋值运算符优先级低

>>> b

9

>>> x=math.sqrt(9)if 5>3 else random.randint(1, 100)

#此时还没有导入math模块

Traceback(most recent call last):

File "", line 1, in

x=math.sqrt(9)if 5>3 else random.randint(1,100)

NameError: name 'math' is not defined

>>> import math

#此时没有导入random模块,由于条件表达式5>3的值为True,所以可以正常运行

>>> x=math.sqrt(9)if 5>3 else random.randint(1,100)

#第一个条件表达式2>3的值为False,需要计算第二个表达式的值,然而此时还没有导入random模块,从而出错

>>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)

Traceback(most recent call last):

File "", line 1, in

x=math.sqrt(9)if 2>3 else random.randint(1,100)

NameError: name 'random' is not defined

>>> import random

>>> x=math.sqrt(9)if 2>3 else random.randint(1, 100)最后,三元运算符是可以嵌套使用的,可以实现多分支选择的效果,但这样的代码可读性非常不好,不建议使用。>>> x=3

>>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

#可以嵌套使用,但不提倡这样用

1

>>> x=0

>>>(1 if x>2 else 0)if f(x)>5 else('a' if x<5 else 'b')

'a' 3. 多分支选择结构

多分支选择结构为用户提供了更多的选择,可以实现复杂的业务逻辑,多分支选择结构的语法为if 表达式1:

语句块1

elif 表达式2:

语句块2

elif 表达式3:

语句块3

else:

语句块n其中,关键字elif是else if的缩写。下面的代码演示了如何利用多分支选择结构将成绩从百分制变换到等级制。>>> def func(score):

if score>100:

return 'wrong score.must <= 100.'

elif score >= 90:

return 'A'

elif score >= 80:

return 'B'

elif score >= 70:

return 'C'

elif score >= 60:

return 'D'

elif score >= 0:

return 'E'

else:

return 'wrong score.must >0'

>>> func(120)

'wrong score.must <= 100.'

>>> func(99)

'A'

>>> func(87)

'B'

>>> func(62)

'D'

>>> func(3)

'E'

>>> func(-10)

'wrong score.must >0'4. 选择结构的嵌套

选择结构可以进行嵌套来表达复杂的业务逻辑,语法如下: if 表达式1:

语句块1

if 表达式2:

语句块2

else:

语句块3

else:

if 表达式4:

语句块4图3 4代码层次与隶属关系

图书网:Python可以这样学pdf

继续阅读

→→→→→→→→→→→→→→→→→→→→查找获取

程序设计

重构 改善既有代码的设计(中文版)pdf

《重构:改善既有代码的设计》(中文版)所提的这些重构准则将帮助你一次一小步地修改你的代码,这就减少了过程中的风险。很快你就会把这些重构准则和其名称加入自己的开发词典中,并且朗朗上口...
程序设计

数据结构 C语言版 第2版pdf

适读人群 :普通高校电子信息大类本科生学习、考研,同时也适合零售和培训。 采用“案例驱动”的编写模式。书中结合实际应用,将各章按照“案例引入——数据结构及其操作——案例分析与实现”...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

评论:2   其中:访客  2   博主  0
    • 古书
      古书 9

      认真学习Python,更新编程知识。

      • 垂堂
        垂堂 0

        这本书真的很好求书,?,谢谢up主