|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
, P( H/ t$ j: A3 C7 Y
# i- o# R: s) n内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 2 ~9 M& o/ J! `+ t$ e
# {! U. L5 Q. b+ \- v
% D3 k' {. q" T0 ?作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础3 l; G# M6 l- a _3 J7 Z" z
第1章 Python基础 39 o3 j- Z- j3 K) u3 W8 @9 k0 B' M8 o/ I
1.1 在交互式环境中输入表达式 3
9 M( \0 i6 q+ u$ D1.2 整型、浮点型和字符串数据类型 6
5 Q' R* t4 p; `( |/ z. m8 i1.3 字符串连接和复制 6
h( N" u: y0 Z+ i1.4 在变量中保存值 7
; Q- G( i$ X2 L9 M1.4.1 赋值语句 7
2 }2 F7 P% N( k7 H) V1.4.2 变量名 9
+ R2 e5 Q7 T: X1 T, _1.5 第一个程序 9% O! ~/ i6 x3 K7 G. n
1.6 程序剖析 11
1 T0 Q4 {0 u8 f" v% l) I6 E V1.6.1 注释 11
3 A9 d' k6 h5 [; ]$ v1.6.2 print()函数 11
- C' @; m4 w, p7 `. J8 T `9 Q1.6.3 input()函数 11
6 q3 U& o+ `) s3 N# k1.6.4 打印用户的名字 12; ?- H A$ W9 {# i0 j
1.6.5 len()函数 127 Q) m3 F8 N4 {1 q& n+ [
1.6.6 str()、int()和float()函数 13; I! U8 R9 f6 e* W h4 E5 C$ k
1.7 小结 15* w5 w& u* ~1 R6 j3 C5 j. J
1.8 习题 15
( W+ b$ w+ u" n7 c第2章 控制流 17
. V% H- [3 g- F; K- m2.1 布尔值 18
5 g1 Z/ }. W4 V5 F. }) \2.2 比较操作符 19
: F1 z( e3 w5 Z2.3 布尔操作符 20
. \8 H4 P- _( v% h2.3.1 二元布尔操作符 20 p8 K# o! U3 j8 m; q" n
2.3.2 not操作符 21
/ _; ~3 b& I* \8 W4 l! s2.4 混合布尔和比较操作符 217 O7 z. }7 z9 _ r! W' ?
2.5 控制流的元素 22
' x- l; l4 M( w6 C2.5.1 条件 22' Q. L0 K9 q& _" J4 w' ^ h2 [
2.5.2 代码块 22
; C! x0 v6 h* {& |* D2 z2.6 程序执行 23
8 ^* s* c; I) d9 R+ ^) x7 i2.7 控制流语句 23, u0 @& a+ `- l# ^* q& S
2.7.1 if语句 236 i2 W9 Z1 c6 w2 R- f: o X
2.7.2 else语句 24
]% p3 Z: q+ y) z7 ]- y' [) R2.7.3 elif语句 25
) B1 I% S |! O" i4 `2.7.4 while循环语句 30) k0 a, n& X; m5 p7 w# D
2.7.5 恼人的循环 31
5 h6 L% P$ V, }, x5 X2.7.6 break语句 339 j1 S' A! u; h) Y8 N! `0 ]
2.7.7 continue语句 34
3 Q( ]0 ?7 A, P6 k2.7.8 for循环和range()函数 37
# }- ^# l3 n& Z2.7.9 等价的while循环 39
/ i9 N3 _# t0 n) U6 Q, V6 s2.7.10 range()的开始、停止和步长参数 39
! p" |5 L; K/ Y' R5 l4 E1 f, b2.8 导入模块 40from import语句 41; |' F6 j4 }3 I& _, i
2.9 用sys.exit()提前结束程序 41
- X# x+ V' F$ M2.10 小结 412 X7 l; ]7 u% j* F% N
2.11 习题 41; ?! U \% ]$ ~
第3章 函数 43
4 M7 h) C+ r _6 w3.1 def语句和参数 449 [0 b1 P: D; D+ U+ c' O: O
3.2 返回值和return语句 45
4 ~3 v' ~& d( H, d1 \" G! n3.3 None值 46
% M7 ?: m1 f6 n3.4 关键字参数和print()47
5 g; m- }, n4 S# W" V" Z) b: V, i3.5 局部和全局作用域 48
; w' A: v7 J' d- I0 M3.5.1 局部变量不能在全局作用域内使用 48
f I; V u- n3.5.2 局部作用域不能使用其他局部作用域内的变量 49
8 N% Y- z5 }( o. Z! {: `# ~# m0 I3.5.3 全局变量可以在局部作用域中读取 49
( J: w( Q9 ^0 N( ?; `3.5.4 名称相同的局部变量和全局变量 50* O6 J. Z* R! O0 V
3.6 global语句 50" _2 @. M% j/ W9 N
3.7 异常处理 52
' S8 p5 g0 ]& Z! |. k: N3.8 一个小程序:猜数字 54
* J& N, X+ ^5 K3 Q) W i5 {3 Y( I; k* Y3.9 小结 55; P& Y0 X7 J! Z8 a) K9 R5 L$ `
3.10 习题 56
! n1 s! ~" ]& R; Z8 K6 m3.11 实践项目 56
8 O" I- l; M: ?; L- R3.11.1 Collatz序列 56, d9 i/ p8 s M' a1 |2 n U) W
3.11.2 输入验证 57( C5 n) B# a2 q" A% x! }) E2 j4 [
第4章 列表 59
, h- n( e3 c v4.1 列表数据类型 59 L \3 O$ N4 \- A y$ G" p. c
4.1.1 用下标取得列表中的单个值 608 A5 }9 ~+ \: n; R% z! l( n
4.1.2 负数下标 61
( T: O5 ~: Z$ l( l/ ~3 _4.1.3 利用切片取得子列表 61
$ f% Y5 P) V, Y2 }4.1.4 用len()取得列表的长度 62- G) I7 R8 r- x& t# Y" H" F
4.1.5 用下标改变列表中的值 62
" H! |3 K* R% S' Y; g4.1.6 列表连接和列表复制 626 g) i# b. ?0 F
4.1.7 用del语句从列表中删除值 63' j& `- ]/ G# b9 D. \% T6 }
4.2 使用列表 63; `! S2 Y" B$ `, X) s3 P
4.2.1 列表用于循环 645 I- c+ [" h9 j+ L
4.2.2 in和notin操作符 652 j4 J4 U5 N6 G1 u. a7 D/ i c
4.2.3 多重赋值技巧 66
, Y7 J& B0 H6 `2 ]3 h4.3 增强的赋值操作 66
$ |- ]1 L- J( \6 H2 z- O, R; a4.4 方法 67# Y; s O) E" `( e. Z7 i
4.4.1 用index()方法在列表中查找值 678 ~7 v$ r4 t; _* z( ~
4.4.2 用append()和insert()方法在列表中添加值 68* U0 T4 l: e" }% F# h3 |. l W6 v
4.4.3 用remove()方法从列表中删除值 69
& j" u! j* k4 y9 I7 t) _4.4.4 用sort()方法将列表中的值排序 69: J5 T! P o4 O2 E/ @/ d! L% y( j
4.5 例子程序:神奇8球和列表 70
K/ U3 ]+ v) R1 D: E% f. x! E9 P4.6 类似列表的类型:字符串和元组 71
4 d, c9 ^$ x# u3 S* M4.6.1 可变和不可变数据类型 72
* T6 r* M1 q4 k8 h p( l% {# u; G4.6.2 元组数据类型 732 t( B: _% Z5 s
4.6.3 用list()和tuple()函数来转换类型 74
0 ~* S) l ]& [+ t; T4 t- N4.7 引用 75
3 [( f2 s* [3 Z% Z4.7.1 传递引用 762 D7 J: `7 K5 Q2 z! M Z, V
4.7.2 copy模块的copy()和deepcopy()函数 77 {9 z% l2 K( r& Q5 q
4.8 小结 78
( E9 u$ p; V4 G* k# ~: R! c; V7 e4.9 习题 781 ^' O% {3 i; {" Y2 s
4.10 实践项目 79( e9 S& x) \& A+ |! f$ Q+ k
4.10.1 逗号代码 79
. r' N3 l. y: J4.10.2 字符图网格 799 G9 h9 w9 G6 x/ v5 m. b% q
第5章 字典和结构化数据 81* Z4 J4 D3 T6 U% j
5.1 字典数据类型 812 g: n- B, F& \9 a9 z6 x# U
5.1.1 字典与列表 82
/ a1 [( K" F' l5.1.2 keys()、values()和items()方法 832 B; I0 s0 |' D& Y; J5 J
5.1.3 检查字典中是否存在键或值 84
$ q. I1 _1 y7 z7 `) X: W5.1.4 get()方法 847 j' t" S# y; E' M4 S4 e
5.1.5 setdefault()方法 85
1 @3 `7 T3 t: ?' k" H, ]5.2 漂亮打印 86
2 U* A+ X% E# x B6 ]# b5.3 使用数据结构对真实世界建模 87
3 `1 s" E7 M/ v/ V5.3.1 井字棋盘 88
6 _3 S# U9 T0 {5.3.2 嵌套的字典和列表 91; s1 e# N1 c. Y
5.4 小结 92( Q1 K! d7 T' r( k* n
5.5 习题 93
- N- ]( b' _, k5.6 实践项目 93& v( x5 h$ U3 b7 m% B
5.6.1 好玩游戏的物品清单 930 C! {) X( W3 C, z* M
5.6.2 列表到字典的函数,针对好玩游戏物品清单 942 U x/ E; O- v$ Y6 F! ~
第6章 字符串操作 95
& y7 _: g+ c. _% k5 a- g% q6.1 处理字符串 95) E- |) G/ e: ]: O- z& f9 y- Z
6.1.1 字符串字面量 957 t& Q; Z' y; b& m) _
6.1.2 双引号 96
) h0 Z: `) d. ?2 @# q+ I+ L D% ]6.1.3 转义字符 96% {9 D( g4 P! r9 u4 k
6.1.4 原始字符串 96
^0 m0 }7 A$ W- @1 u0 R6.1.5 用三重引号的多行字符串 97% v) n# K2 j+ W3 K% n) C; U
6.1.6 多行注释 97% N' F2 I6 D0 v8 e. e; R$ ]
6.1.7 字符串下标和切片 98
0 z& _& q+ v/ Z0 t6 k9 k6.1.8 字符串的in和notin操作符 98& y' z1 \7 H! o" t, h7 Q6 B
6.2 有用的字符串方法 991 \% y: n& ?" ^
6.2.1 字符串方法upper()、lower()、isupper()和islower()99* u; N( Y( @& P8 y% Y. A* [5 l
6.2.2 isX字符串方法 100, D' N0 Y0 \. {1 `1 w
6.2.3 字符串方法startswith()和endswith()102
1 Y; ] E! h( E: d- L6.2.4 字符串方法join()和split()102
4 s' t6 F* b! P6.2.5 用rjust()、ljust()和center()方法对齐文本 103
V; _& Y" t7 H0 c; Z# Z6.2.6 用strip()、rstrip()和lstrip()删除空白字符 1043 D2 H7 p. R5 Q
6.2.7 用pyperclip模块拷贝粘贴字符串 105+ j" `; S0 J W
6.3 项目:口令保管箱 106
) r$ ]4 u z% |3 R第1步:程序设计和数据结构 1069 S J2 o- A) y% N
第2步:处理命令行参数 106
# E" F' p4 P2 ]) ?6 K! a1 x& `% E( ~第3步:复制正确的口令 107
; i! N0 z! c) d# s: }7 t+ T6.4 项目:在Wiki标记中添加无序列表 108
: w; g* i$ d! I) p第1步:从剪贴板中复制和粘贴 108
1 k( `; y p( R6 u" z5 t7 G第2步:分离文本中的行,并添加星号 109
' L. g. [* ?! w8 j o0 O8 O第3步:连接修改过的行 1093 G) r# G4 J7 ^) [
6.5 小结 110. J+ @' `/ w, v( B7 @- S. {* D) D
6.6 习题 110
2 A' U4 Y" J8 [+ F, M# p% A$ n6.7 实践项目 1117 z! r/ r3 k4 @) j, ?4 ?( C
表格打印 111
" |' V/ [ P+ f) Y2 V第二部分 自动化任务/ D" t& u% O# F6 l8 O; A- F8 X
第7章 模式匹配与正则表达式 1156 B2 G! `8 O$ }! u
7.1 不用正则表达式来查找文本模式 116
1 _# k, p6 G! @2 f/ r7.2 用正则表达式查找文本模式 117
* u, G- Z9 v2 s* e7.2.1 创建正则表达式对象 1189 v$ k ~: K. r2 q1 N7 i# y
7.2.2 匹配Regex对象 118# E. k% f2 @$ h
7.2.3 正则表达式匹配复习 119
' ~" n, P3 ?# ~/ f8 o' `7.3 用正则表达式匹配更多模式 119
9 [- Y4 }: h5 M7 M( A% D7.3.1 利用括号分组 119, \) d0 y$ j' g
7.3.2 用管道匹配多个分组 120( X* U. t1 L+ P* [7 |6 p
7.3.3 用问号实现可选匹配 121) w+ h% n2 } t- s
7.3.4 用星号匹配零次或多次 121
; B9 g. ^/ p O o7.3.5 用加号匹配一次或多次 1226 Z: Y) U- {, l/ q
7.3.6 用花括号匹配特定次数 122. g$ K! `! B0 E
7.4 贪心和非贪心匹配 123
% y: G6 \/ f1 J5 s3 D7.5 findall()方法 124
" B3 M' L7 v' }7.6 字符分类 124
& ^& f$ G) c$ \& r7.7 建立自己的字符分类 125- T8 P) s& k3 w# X) T- v
7.8 插入字符和美元字符 126
/ [4 d+ O* ~) w/ s+ {# z: z m7 k9 [7.9 通配字符 126
4 b2 g* g# `! Q6 H- i! R7 j. ^0 l7.9.1 用点—星匹配所有字符 127. e; |7 Z* ~+ e6 u8 e \
7.9.2 用句点字符匹配换行 127: d$ @$ |! {+ ~0 J1 R. Y
7.10 正则表达式符号复习 1280 B9 G+ `% b1 C- t, U. y4 U( W
7.11 不区分大小写的匹配 128
5 r3 T4 {& r! [: c A7.12 用sub()方法替换字符串 129. C" k: S4 z9 o# {5 D5 K
7.13 管理复杂的正则表达式 1299 n$ S4 R4 [0 o+ e
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 1308 Q: l" K w9 u. _; k/ C+ X
7.15 项目:电话号码和Email地址提取程序 130
3 B" T/ X0 I4 N4 e第1步:为电话号码创建一个正则表达式 131$ n+ i7 }7 {; D) _! e2 _; Q: R
第2步:为email地址创建一个正则表达式 1328 `, o5 B6 p9 D* \! b/ Q
第3步:在剪贴板文本中找到所有匹配 132, t5 K/ k9 h; z n+ d
第4步:所有匹配连接成一个字符串,复制到剪贴板 133$ ?5 T/ A4 S5 Q
第5步:运行程序 1339 n' O6 c! i7 W% x
第6步:类似程序的构想 1341 a, p( i0 Q, r6 T, M! a
7.16 小结 134- {* E" Y! [% x7 O& M
7.17 习题 134
0 M# f2 \3 l1 c7.18 实践项目 136 Z3 _% {) b4 s, V/ h8 x
7.18.1 强口令检测 136
. f9 q4 T- R' L; \ H7.18.2 strip()的正则表达式版本 1361 H7 m% d1 n( h6 c3 g R. z
第8章 读写文件 137* g; y* O# p8 T+ {0 N7 H
8.1 文件与文件路径 137
0 K8 i" C7 h2 `$ s! O1 t A8 T8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138! z' f# E) W& X7 O, f
8.1.2 当前工作目录 1398 R( Z7 c' [, a/ @5 _4 ]8 \
8.1.3 绝对路径与相对路径 139' x8 R* I* E+ u/ F& n
8.1.4 用os.makedirs()创建新文件夹 140, k ]: z# \8 B- I; \7 t- ~
8.1.5 os.path模块 140
' r+ c4 r/ h& D* w- M7 b* i8.1.6 处理绝对路径和相对路径 141
/ g, N( g2 a2 z& q8.1.7 查看文件大小和文件夹内容 142
& E# U- r6 y" d/ P8.1.8 检查路径有效性 143
+ m7 J5 @5 J( |8 ]% v- h8.2 文件读写过程 1448 ^: Q1 W/ |5 r2 b% a: {, K
8.2.1 用open()函数打开文件 145
) B& n8 W8 V/ _$ o- G% z% h8.2.2 读取文件内容 145
1 C3 `$ m1 [. F) d8.2.3 写入文件 146, p5 v( h- v0 e, ^
8.3 用shelve模块保存变量 147- @+ N0 u7 z' ?) Q! {
8.4 用pprint.pformat()函数保存变量 148
. q& o9 @" I/ c5 E1 K4 K% K8.5 项目:生成随机的测验试卷文件 1491 B9 N( Z% b7 L4 |( g: \
第1步:将测验数据保存在一个字典中 149" F3 V: f) R/ O% ~* i( D
第2步:创建测验文件,并打乱问题的次序 150
# P+ u2 h& ?; {, Q+ J: a第3步:创建答案选项 151
* i: @+ m" L W, F- d* ^ b第4步:将内容写入测验试卷和答案文件 151
/ H) e5 T6 A' V4 j2 S( o5 Z& \+ s; m, g# t# e l; @$ Y
|