|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma # a( v2 t. F9 x9 V1 S3 c
5 ~6 i( D# \/ P4 o. Q2 K内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
, H( U; n4 R1 o# M; P; q7 g) m3 [3 o' e( j) ~" F3 |% k
/ H& w( |1 b3 l! ~
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础# H9 i- ^8 s7 u8 x
第1章 Python基础 3
3 M; f/ K. U9 K& S- i7 |7 S3 Z1.1 在交互式环境中输入表达式 3% I8 d4 N' K7 s, J5 S! U. [
1.2 整型、浮点型和字符串数据类型 69 U9 c7 N, J7 V5 `# T" u
1.3 字符串连接和复制 6
- B/ ~) T$ W+ Z- r6 B( V1.4 在变量中保存值 7
$ X9 M+ V2 q' [1.4.1 赋值语句 75 w) y6 }: D1 ~( U
1.4.2 变量名 9% J/ ^" y) f) K' J1 \. S) W& M, e
1.5 第一个程序 95 y3 y0 l# |0 R8 _) n, G
1.6 程序剖析 115 w8 ?% z4 |( n% m$ v' a/ q
1.6.1 注释 11
) p5 j3 H4 W- v1.6.2 print()函数 11
0 w4 D" Y2 F6 h2 K: ?: D1.6.3 input()函数 11" n2 K9 _% f2 {, Q5 L+ L
1.6.4 打印用户的名字 12 M5 @. i! ~- H
1.6.5 len()函数 12
/ U, K+ [' J2 C. @) m1.6.6 str()、int()和float()函数 13
% s M' n8 m: M( p1.7 小结 15/ Y8 A3 x. C1 E2 L( X" G
1.8 习题 157 `' `7 j( L+ c! \
第2章 控制流 17
5 I) y/ _ M" H( N8 [2.1 布尔值 18
& G; d5 U% f, d3 A7 s& E) b$ N2.2 比较操作符 19
2 z: _1 W9 v" _- h; ~$ Y2.3 布尔操作符 20
7 {' _2 G# ?4 a3 R" r2.3.1 二元布尔操作符 20
, A) K) ~9 ^& c9 [" R( K1 o2.3.2 not操作符 21
0 I; F% u4 E: {2.4 混合布尔和比较操作符 211 w7 ~ i! u& R4 U+ ~) y
2.5 控制流的元素 22) Q5 L* G7 _2 Q* q
2.5.1 条件 22
) G* I {6 {/ z: t6 @2.5.2 代码块 22
" s3 H A& S% ~+ i8 S# e2.6 程序执行 23
6 I# A/ \- ^/ g$ j/ N! I5 h, \2.7 控制流语句 23
5 l8 }$ S6 u- l/ A3 M& C2.7.1 if语句 23
% N6 {9 @3 D0 S& k8 z$ B! k0 Q8 t2.7.2 else语句 246 }+ H8 @9 d' j/ L9 G
2.7.3 elif语句 25 j) b0 Z& u; Q. R+ h
2.7.4 while循环语句 30
9 V9 B1 @% U! u* {8 r2.7.5 恼人的循环 31, \8 N, h3 u5 N% ~9 E: G7 _% t
2.7.6 break语句 33* L7 h3 Q6 X3 `2 f/ U4 c
2.7.7 continue语句 34* F! M7 n6 z; b
2.7.8 for循环和range()函数 37- G0 L8 i0 G- I0 Y5 {
2.7.9 等价的while循环 39; I: X2 |/ q4 i) ~. g+ w
2.7.10 range()的开始、停止和步长参数 39
5 V4 B9 t. K2 x1 U2.8 导入模块 40from import语句 41
( m$ [+ o F( u2.9 用sys.exit()提前结束程序 41
# R; K2 y7 F% {% R) G0 Y2.10 小结 41
' g2 _- C" u9 @5 ]2.11 习题 41' Z6 V+ u3 `5 [0 k, h
第3章 函数 43
" i% P; Y7 H; ]3.1 def语句和参数 44
+ A4 w: V; E6 N3.2 返回值和return语句 45
7 r1 I# C4 E4 Q6 j& X5 g3.3 None值 46( D. A1 e: J3 e5 A! o7 S$ e
3.4 关键字参数和print()471 K* Z7 u7 f! _* s& F. w% f
3.5 局部和全局作用域 48: q# I! N' t7 n
3.5.1 局部变量不能在全局作用域内使用 48
7 L( Z8 \8 e) K5 ?, A3.5.2 局部作用域不能使用其他局部作用域内的变量 49* ]: ]* \6 n; Q# R9 W0 P
3.5.3 全局变量可以在局部作用域中读取 49
, u5 ^" e( F8 q0 [7 \5 v3.5.4 名称相同的局部变量和全局变量 50
- Y F+ ~$ X! L `6 }' P# g3.6 global语句 50
0 q( o0 i3 L: [+ _1 s v9 z: C3.7 异常处理 52
3 ~. n5 o b( E% r& J" p3.8 一个小程序:猜数字 54
1 z' c+ ?3 h9 @) G( s3.9 小结 55
$ u: F/ @8 X0 E2 t" R4 v3.10 习题 56! ?6 Y p' E1 z$ Z& l$ ?/ U
3.11 实践项目 56: C m8 X8 ^/ I" C
3.11.1 Collatz序列 56. F- }7 d; I2 a* f, c& O( c9 g
3.11.2 输入验证 57" w+ h2 x- t, l- W) J; Y! o
第4章 列表 59) `4 c' [) N9 a! d' S
4.1 列表数据类型 59
! i+ g# D, ?/ y& K0 s4.1.1 用下标取得列表中的单个值 60
# d6 ~2 j( c A' d2 `4.1.2 负数下标 61
6 P T- B! z; O2 |5 F4.1.3 利用切片取得子列表 613 U3 N; P7 R1 d. b# t" F8 u
4.1.4 用len()取得列表的长度 62! A1 T9 A! r. R$ s$ D
4.1.5 用下标改变列表中的值 62
; d; u7 N4 y8 s; n( n/ p! j4.1.6 列表连接和列表复制 62
2 Y, z! L# r) u4.1.7 用del语句从列表中删除值 636 p5 A, I0 @5 i3 V! v
4.2 使用列表 63
7 K ^+ i$ `4 h* D4.2.1 列表用于循环 64
' H1 U3 R+ x/ t( Z* p% g4.2.2 in和notin操作符 656 y8 v" K: o5 X3 h/ f
4.2.3 多重赋值技巧 66
9 w1 [) |* b% Z, ^9 d8 R) Q$ B4.3 增强的赋值操作 66
. f& G+ t: ?) M) Z3 o: p4.4 方法 67+ R# T1 v/ F" g8 [" s
4.4.1 用index()方法在列表中查找值 675 J% p$ P2 K, P5 p( H3 A) b; d" b
4.4.2 用append()和insert()方法在列表中添加值 68! i8 y# R- [( g8 W
4.4.3 用remove()方法从列表中删除值 69! P! r' y( z# _% w" C( Z
4.4.4 用sort()方法将列表中的值排序 690 I5 V5 y" T* u* \# j: x K
4.5 例子程序:神奇8球和列表 70
) F0 A: l/ F# ?6 q' w+ Z$ @4 V4.6 类似列表的类型:字符串和元组 71" u& I; g* g8 q$ [ ?/ q1 Z1 T
4.6.1 可变和不可变数据类型 72
- y& l4 I$ k4 m. T, R s4.6.2 元组数据类型 734 r# f D" ^( E" S3 k7 R
4.6.3 用list()和tuple()函数来转换类型 74
. q/ @8 m% |: _2 ~" X4.7 引用 75% f) m; L8 B" o. U
4.7.1 传递引用 76
+ f' `' _% J5 p4.7.2 copy模块的copy()和deepcopy()函数 774 f: s7 Y7 U9 ~! }- I/ E+ y
4.8 小结 78
* w/ \3 ?& Z/ \) `" g8 i9 J4.9 习题 78
+ |- j& `2 s/ e, C% T) G8 {4.10 实践项目 79" [& z" t# \$ r) Y9 s
4.10.1 逗号代码 79! W; _5 {7 T' d4 @6 W8 K; a9 I+ }
4.10.2 字符图网格 79
. I7 @6 H# l9 Y: L$ \5 d) s+ O1 e第5章 字典和结构化数据 81
& @8 B+ m9 Y3 X2 u2 M/ b5.1 字典数据类型 81
% M3 s) N7 M' n' o+ C! U5.1.1 字典与列表 82
7 A' [9 \$ ?( _% K3 A$ Q( o5.1.2 keys()、values()和items()方法 83
C, }3 K0 w/ e u5.1.3 检查字典中是否存在键或值 84
; C- ~% o- y2 w7 {# P6 X5 j5.1.4 get()方法 84# ^3 X( t* L! y
5.1.5 setdefault()方法 85 |1 F* W- A8 g" _* ]* Z
5.2 漂亮打印 86
- [% \/ O' W1 J0 V" X2 S8 h5.3 使用数据结构对真实世界建模 87
0 y! _! }9 X8 @" e% }* V- U5.3.1 井字棋盘 88" d- ^) |5 C; P) ^: C
5.3.2 嵌套的字典和列表 91 v n2 q l2 } |1 A; }/ ^ m
5.4 小结 928 F. c2 G8 X1 B
5.5 习题 93
0 E# ]# W. ^3 s/ \$ I, z6 {& o1 v5.6 实践项目 93
7 Y: U" }8 z1 f. |& w5.6.1 好玩游戏的物品清单 932 G5 o9 s L9 `- l& T1 W
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94) ~7 \7 o7 Z3 z7 P+ _+ b7 Y; S! `
第6章 字符串操作 95
1 T% O' N) B) X3 M) J6.1 处理字符串 95
- c# b- e& A8 N' t( Q S6.1.1 字符串字面量 95
! R5 I( K) |! L/ [8 N8 }; f6.1.2 双引号 96 a: n) F( x7 G+ {. o
6.1.3 转义字符 96
* f8 K$ \, d2 y" F6.1.4 原始字符串 964 e' f: s. F, k4 b0 q; p! ~
6.1.5 用三重引号的多行字符串 97
X+ B5 f) b9 [6.1.6 多行注释 97
4 }; r$ K7 k" O6.1.7 字符串下标和切片 98
( O: Z5 l! a2 E6.1.8 字符串的in和notin操作符 98
+ Z' O8 w' |1 [7 u, l4 K( D6.2 有用的字符串方法 99" ^$ s1 l: `8 u3 b6 _( `: H. l
6.2.1 字符串方法upper()、lower()、isupper()和islower()99
: x' ^) B0 \# _1 m% s6.2.2 isX字符串方法 100' P- E1 C& C1 }6 {8 S
6.2.3 字符串方法startswith()和endswith()102
( l; |+ z' ~+ Y. }6.2.4 字符串方法join()和split()102
, a" k6 X8 T( _2 Y, M6.2.5 用rjust()、ljust()和center()方法对齐文本 103" o( }( M2 U& B( ?
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104, m0 g4 N* W: v2 K) k% ]/ p
6.2.7 用pyperclip模块拷贝粘贴字符串 1050 C5 A. w0 O' h) M6 m) K2 M0 |
6.3 项目:口令保管箱 106
% O: c+ i8 l/ [1 L2 X第1步:程序设计和数据结构 1065 |0 o9 [' C3 V+ t1 j0 o, Q
第2步:处理命令行参数 1060 ^; g7 Y5 v: f) W# H* i% _# v
第3步:复制正确的口令 107$ f# P5 m* a- t2 G0 |
6.4 项目:在Wiki标记中添加无序列表 1084 i2 n! M8 e2 O# p0 P
第1步:从剪贴板中复制和粘贴 108! l- o: l: x: A3 j3 [; [& G7 O( A
第2步:分离文本中的行,并添加星号 109
' a* F0 G: P3 N第3步:连接修改过的行 1090 d& ~' C. `9 B9 O: A$ [* u8 v
6.5 小结 110
# s7 ~4 A2 |" \2 ~) ~0 g6 [6.6 习题 1102 R6 |6 O; x c% V; R. A
6.7 实践项目 111
2 D) C# ~ i* {3 H表格打印 111
7 Y8 ]* H9 \, D. Q% O$ j7 t第二部分 自动化任务9 _( o; |' _5 D! x
第7章 模式匹配与正则表达式 115. `2 H1 w( Z, Q7 C J q# C* b
7.1 不用正则表达式来查找文本模式 116
9 v( P, x! q3 h$ z) e7.2 用正则表达式查找文本模式 117/ B' A. ]. a* \( ^" I
7.2.1 创建正则表达式对象 118
; m0 R( b; |% q4 D" V6 ?. ] D7.2.2 匹配Regex对象 1189 z2 _1 e* F1 x z3 R1 }
7.2.3 正则表达式匹配复习 119
2 T! w, U& g% ~8 i% N7.3 用正则表达式匹配更多模式 119
! [" r7 G# g2 T+ U( I7.3.1 利用括号分组 119
5 {2 z+ l! a2 t7.3.2 用管道匹配多个分组 120
+ f6 S4 H* j" R/ t |- ~7.3.3 用问号实现可选匹配 121
* q! z* B% k" z F7.3.4 用星号匹配零次或多次 121, P+ y3 @, D. @- W8 m- M
7.3.5 用加号匹配一次或多次 122( `9 m" V, m- F
7.3.6 用花括号匹配特定次数 122
. k2 ?$ V2 e! X) k6 c# o7.4 贪心和非贪心匹配 123% H/ U3 P# Q1 f6 w
7.5 findall()方法 124
! p4 ~" M6 \8 c7.6 字符分类 124$ y9 t6 \, w1 |+ G/ W9 v
7.7 建立自己的字符分类 125
4 u2 U8 [5 t9 K- l4 k/ E2 c1 |& _! Z1 C7.8 插入字符和美元字符 1262 e- ?: p4 h9 M c$ y, s. t. }- O& F
7.9 通配字符 126# S, n+ A& D& T
7.9.1 用点—星匹配所有字符 127( n- b' J8 N9 Y9 N+ Q* r2 i; z
7.9.2 用句点字符匹配换行 127! p3 w- f0 M. y$ ^+ B
7.10 正则表达式符号复习 128
7 d U3 |# q3 n& D3 a7.11 不区分大小写的匹配 128
' o# P" E( t: B' t7 j$ i9 |$ M7.12 用sub()方法替换字符串 129, [/ U% ?+ D- W+ k& G% E
7.13 管理复杂的正则表达式 129
) K3 K$ Z) N) O! n7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130' W* z& _1 }+ J* a; a
7.15 项目:电话号码和Email地址提取程序 130
+ A _6 j" l: l* X7 { }0 E4 h' I第1步:为电话号码创建一个正则表达式 131. p) i# u, [* | p( ^
第2步:为email地址创建一个正则表达式 132
% D6 e) d& m) I第3步:在剪贴板文本中找到所有匹配 1321 P: v$ d5 l: V# L$ u
第4步:所有匹配连接成一个字符串,复制到剪贴板 133 U V! x' u) m% M
第5步:运行程序 133
: x" `) i: L5 v" l3 _7 a第6步:类似程序的构想 134
# k; l+ x& ^* i0 |7.16 小结 134
7 ^7 P. K+ z$ Y& x& ]7.17 习题 134
% `; [' D! r% D ~7.18 实践项目 1362 L. b0 J5 q7 [! v
7.18.1 强口令检测 136
$ V! R0 c3 P- I5 k# \( m7.18.2 strip()的正则表达式版本 136; u. e# B! K% N) T' W, ^
第8章 读写文件 137" @+ T% \( v/ O! [) t
8.1 文件与文件路径 1373 {3 b4 \5 p8 X# c# ~ c( D
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 1383 V, ]" M `# r4 N
8.1.2 当前工作目录 1390 Z# Q. c2 f6 B( I/ d: K
8.1.3 绝对路径与相对路径 139
; }& N# [6 b4 W% ^# } p3 [8.1.4 用os.makedirs()创建新文件夹 140
0 P. v' C' h2 w2 l* k1 C3 Z* H8.1.5 os.path模块 140; y4 ~( t! u4 F8 ^
8.1.6 处理绝对路径和相对路径 141
4 H: }" x( @ G( ?3 b' z8.1.7 查看文件大小和文件夹内容 142
; o5 h3 ?* W* g# J3 X u* y8.1.8 检查路径有效性 1436 l7 z9 V2 b# [7 e4 s( z
8.2 文件读写过程 144
2 @$ }1 {5 S+ E6 \8.2.1 用open()函数打开文件 145
8 Z. \- r5 \7 [6 e3 C0 Q$ {7 e8.2.2 读取文件内容 1451 F% q, Z Q+ S1 [0 k, B
8.2.3 写入文件 1464 V$ `# }$ p$ J& p" o" X
8.3 用shelve模块保存变量 147
7 [4 P$ s- r- V- d' f6 ~/ Z8.4 用pprint.pformat()函数保存变量 148/ l: c. v- }# a, L; O* X
8.5 项目:生成随机的测验试卷文件 149; N* E+ o0 ]5 c- R! C1 c% ]
第1步:将测验数据保存在一个字典中 149
0 H' a) \: Z: ^ I1 @ Y# t) W第2步:创建测验文件,并打乱问题的次序 150
* [8 {6 n$ M, M! E9 O第3步:创建答案选项 151
3 q: E2 l+ {' }* C5 P+ P, d A第4步:将内容写入测验试卷和答案文件 151
/ j( r8 j/ `$ b0 ?* S, Q
7 S% }7 s0 j: X: y% A! p |