|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma 8 t+ j: G+ @/ `$ {
F! d+ {5 Q/ V9 O5 @
内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 1 k2 N0 \2 |, g4 z% p
+ N, |6 s% I5 Z- m: N3 X
2 p4 C3 A6 a; i" r% u0 w0 H
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础( E6 I! r9 l! J3 W1 N* M3 t
第1章 Python基础 32 l" P& h. P8 I) g: D' A, m
1.1 在交互式环境中输入表达式 3
) p9 y$ V# { s* f9 Y: a1.2 整型、浮点型和字符串数据类型 6
5 p& j5 }: b4 H4 K8 x1.3 字符串连接和复制 6
0 o( V- S9 X. V8 M% U7 M1.4 在变量中保存值 7
7 G+ b6 w6 N6 l* X+ I$ T; q8 ~1.4.1 赋值语句 7# K& X: A W3 x) k h, Q
1.4.2 变量名 96 ?/ g3 ~+ Q" B/ F4 T! S
1.5 第一个程序 9
6 ?% m/ m6 q9 z/ K/ s+ z- B7 [3 g1.6 程序剖析 11
Q3 @# Q: b& f ^1.6.1 注释 11; E" Q, i. i& Z- t9 O8 ~" c. X; Z
1.6.2 print()函数 11% T) `" z" h1 s' r( S- P7 I
1.6.3 input()函数 11
6 p4 i% I" s7 G5 x A1.6.4 打印用户的名字 12
$ q* {1 l2 O K1 D" I& r' [0 K8 N1.6.5 len()函数 12- E) e7 m8 C9 }; d5 @
1.6.6 str()、int()和float()函数 13
. Y* e0 R: |# C- K: }. {2 \* E6 ?1.7 小结 156 a8 O6 [/ c: B) I# e2 ^
1.8 习题 15
0 q8 {) g$ b+ Q& C2 z第2章 控制流 176 U. S0 s1 }% V! d$ f
2.1 布尔值 18
8 m L9 M% v9 ], o: U1 H4 h+ B: V; o, n2.2 比较操作符 19
7 s) ^2 T1 j; }+ }$ N0 R2.3 布尔操作符 20
) L c1 b3 f: a$ x# K2.3.1 二元布尔操作符 20/ i' @) R, S" q: X" ~
2.3.2 not操作符 21- Q: \6 v0 @2 e6 P6 R3 L
2.4 混合布尔和比较操作符 21
0 A5 S3 y" ]& M2.5 控制流的元素 220 K' `% o. G4 q D) @" }
2.5.1 条件 22! u4 R2 o n) C/ q. Y
2.5.2 代码块 22
Y, q7 a0 {# ]2.6 程序执行 23
* t' g5 m/ w7 @9 c3 u6 {) j2.7 控制流语句 23
( b( G+ `5 ^8 C: B2.7.1 if语句 23
) Q( t- X9 y" H9 @2.7.2 else语句 248 S9 T1 o8 L* Z' {3 W
2.7.3 elif语句 25
% r7 ^8 c5 x/ |8 u" _ v7 {9 `2.7.4 while循环语句 30
' Y% U2 q0 T' T: v! C2.7.5 恼人的循环 31
( j4 P3 d# }9 p% A- X2.7.6 break语句 33; w! s. G: h+ |
2.7.7 continue语句 344 M3 O# T# o1 u% M- k
2.7.8 for循环和range()函数 371 r! g5 V" @8 u2 q% \6 \
2.7.9 等价的while循环 390 C9 {2 K0 ^1 h* [0 a; v- P
2.7.10 range()的开始、停止和步长参数 39( `8 j- ]. Y: b9 i# [
2.8 导入模块 40from import语句 41
( A* D4 G; g7 d3 l. ~ x2.9 用sys.exit()提前结束程序 41* d) p/ W1 P" m4 _( K! Y
2.10 小结 419 N) v% c! N7 ^) P' B
2.11 习题 41
$ C& v8 @( ~9 v8 u! U) e) l第3章 函数 43
+ N- P n, d7 v% u# ~3.1 def语句和参数 44( q1 o# T7 R5 x( v n
3.2 返回值和return语句 456 h, H, }4 j9 ]& L! S1 M
3.3 None值 46
8 E9 z2 v/ c [# O7 M/ e3.4 关键字参数和print()47; v" R2 |5 h* F2 J% H
3.5 局部和全局作用域 48
$ k8 y' R2 @2 X Y+ ]/ n* x3.5.1 局部变量不能在全局作用域内使用 480 t3 ~" u) q) l5 n- W* b
3.5.2 局部作用域不能使用其他局部作用域内的变量 49# p% M' e# U S. [2 ?( G5 K0 U/ p
3.5.3 全局变量可以在局部作用域中读取 49" p; t& ?; ~# d' Y% f
3.5.4 名称相同的局部变量和全局变量 50, ], o- x1 |* ]& g# L9 v8 f" R' O
3.6 global语句 505 y2 e8 }6 M9 D3 r- z' ]. @
3.7 异常处理 526 N5 C; @3 o, L( N- j( K
3.8 一个小程序:猜数字 54* ?; R9 T& o/ [, A) m) d" v
3.9 小结 55( ?9 K% m4 u y ~$ q1 R
3.10 习题 56- e% z( u; ]7 X) `
3.11 实践项目 56
2 ?9 D$ R( n! @* ^/ v3.11.1 Collatz序列 567 V4 w+ E; Y3 ?* ~% v
3.11.2 输入验证 57
$ f4 ~- j$ V, o第4章 列表 59
4 u3 h5 |( _4 n- k& X1 W4.1 列表数据类型 59
B9 t; o8 P# V) t: D4.1.1 用下标取得列表中的单个值 605 a9 `# a) J) ~1 _
4.1.2 负数下标 61
" ~! V# W/ b! _/ h7 o. p4.1.3 利用切片取得子列表 61: W( w3 o" N* R7 ~
4.1.4 用len()取得列表的长度 62" c# z! y: X+ }
4.1.5 用下标改变列表中的值 62
+ D3 T; e' F- p. k4.1.6 列表连接和列表复制 620 H1 p* f1 U, q$ S. G# q: B$ d, l
4.1.7 用del语句从列表中删除值 63) L4 j( h+ G2 ]- y) j
4.2 使用列表 63
2 s a* M/ C; ^% Q5 e& x4.2.1 列表用于循环 64# M' q' X5 i; N( i
4.2.2 in和notin操作符 65; p: l5 [: W% k. S9 c1 V2 a" L
4.2.3 多重赋值技巧 66
) I; U2 D& H: ?: E+ W' X$ l4.3 增强的赋值操作 66( p6 {. k+ l! }/ s
4.4 方法 67
! |7 M" c! p0 f* J" L# n4 V! R4.4.1 用index()方法在列表中查找值 67
8 D! T6 A* `9 w0 E' V4.4.2 用append()和insert()方法在列表中添加值 68
. |' V( v+ K) M& W6 i4.4.3 用remove()方法从列表中删除值 69: U1 o3 `; o5 o1 q: }
4.4.4 用sort()方法将列表中的值排序 69- A* T6 N1 S/ O- o- G! x
4.5 例子程序:神奇8球和列表 70/ _+ N9 F# I1 M: r. F
4.6 类似列表的类型:字符串和元组 71
4 X( o3 j2 g e7 }1 a+ R, [. G4.6.1 可变和不可变数据类型 72, R- s5 w/ d7 K
4.6.2 元组数据类型 736 m& O) W/ D+ u1 y; S
4.6.3 用list()和tuple()函数来转换类型 74
, d4 V# r2 [3 T5 ?% c. C4.7 引用 75
0 h. P9 G0 W: A4.7.1 传递引用 76
- `3 E% H" w: y( p6 y8 o' g4.7.2 copy模块的copy()和deepcopy()函数 772 V% i [9 C r' p9 Y* l
4.8 小结 78; I5 D3 Q6 \9 s0 l, X3 G: @
4.9 习题 78) m" k0 ^ S1 T9 C$ m; _
4.10 实践项目 79+ i R v6 o9 b$ T! o
4.10.1 逗号代码 79/ O: E2 N4 N" v R H
4.10.2 字符图网格 79
+ u) B3 j4 S+ q! V4 c+ Z4 B第5章 字典和结构化数据 81
8 N& [- ]. C( ] ~8 c4 j5.1 字典数据类型 81! U% T7 B& U! l* M! c' L# c
5.1.1 字典与列表 82! m8 B6 R8 a8 k* G8 O6 s# b
5.1.2 keys()、values()和items()方法 83" a$ V, c5 l3 C. O) k
5.1.3 检查字典中是否存在键或值 84* X F. K( c8 g% X7 I: h3 ^; }
5.1.4 get()方法 84
/ R8 u) V% t1 X! S5.1.5 setdefault()方法 85; ~% A, M4 H7 ?2 m8 C0 |
5.2 漂亮打印 86' P" h6 G; T$ b
5.3 使用数据结构对真实世界建模 87
+ z8 u1 L# i0 r3 e5.3.1 井字棋盘 885 _- @# L, V; [3 l2 O, G# x
5.3.2 嵌套的字典和列表 91
! \5 n: t4 D- N q: V2 D5.4 小结 92
. D& c) M( K+ Y" _ v5.5 习题 93
8 I( P2 s# K6 G- g5.6 实践项目 93
( S8 U: Y- D# m( b5 \0 k5.6.1 好玩游戏的物品清单 938 Z' {: S( d1 _* `
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94! V8 ^5 {( X+ I% [5 Z, r
第6章 字符串操作 95
& J$ E9 i/ z9 i6 g6.1 处理字符串 95
- ^8 F( p4 M4 ]* y* m& p6.1.1 字符串字面量 95
9 t g9 p4 ^; h; x# b, X2 w# a6.1.2 双引号 96- B4 _% i9 |) W/ ?4 o
6.1.3 转义字符 964 p0 ]- k: {* r+ D- m/ z3 N
6.1.4 原始字符串 96
8 D. U( v3 X) O- F6.1.5 用三重引号的多行字符串 97
" ~- D3 {& b; ^! m& t! S+ r6 D4 A8 z6.1.6 多行注释 97; ]2 _& n- c" i/ B; w1 g4 x
6.1.7 字符串下标和切片 98
+ r0 L6 B$ W* z; y7 s3 c6.1.8 字符串的in和notin操作符 986 a3 |+ v& S. u) U
6.2 有用的字符串方法 99 }/ r( G% G8 y, E- ]5 b, Z3 w* P
6.2.1 字符串方法upper()、lower()、isupper()和islower()99
) t. z4 Q& V5 }- b C9 U& P u* T6.2.2 isX字符串方法 100
& S k5 m, |- C6.2.3 字符串方法startswith()和endswith()102
3 B+ t+ {9 W, H) C W6.2.4 字符串方法join()和split()102
8 L$ v; P& q: O1 K& M/ `% T6.2.5 用rjust()、ljust()和center()方法对齐文本 103
) n( ]7 S5 ^; c( u( v8 p* N& S6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
* a) a3 M6 ?' B3 e% g4 Y9 c% d6.2.7 用pyperclip模块拷贝粘贴字符串 105
* r$ F1 Q: ^# b( P$ n5 _6.3 项目:口令保管箱 106
. h! A! E& k4 t- h7 [8 @第1步:程序设计和数据结构 106
3 e8 y7 }! H& W5 L3 q5 u第2步:处理命令行参数 106
' t) n" ]% _3 _# b- {* g x+ B- c第3步:复制正确的口令 107
: G. U2 C) |1 c4 c) v6.4 项目:在Wiki标记中添加无序列表 108
$ p ~, g* `; i2 w, C第1步:从剪贴板中复制和粘贴 108
' M2 `; P' v# k4 `* P第2步:分离文本中的行,并添加星号 1095 O8 f& l3 R: A6 ?+ z
第3步:连接修改过的行 109; `# p; L: `/ F9 q7 H# }
6.5 小结 110 L) ^* ^0 }( t% y, P, h# A5 x# F
6.6 习题 1103 {% z. i0 M7 k! o, s( u1 Z
6.7 实践项目 111
6 Q1 g# A8 X3 @; s1 Q表格打印 111, T: Z4 W, u A
第二部分 自动化任务$ j" c3 @- z2 ^& S: c1 q3 ~ m8 h
第7章 模式匹配与正则表达式 115
8 t/ ~* Z* \# W) c# _: s* K7.1 不用正则表达式来查找文本模式 1165 ]" S8 D! f8 q7 ]. e# q
7.2 用正则表达式查找文本模式 1178 _9 U' q$ g3 o5 \' Z( Z
7.2.1 创建正则表达式对象 118
# Y; e8 V0 |$ ?# h5 f7.2.2 匹配Regex对象 118; D4 ?% [, O% l, x2 y. X; j
7.2.3 正则表达式匹配复习 1194 {, ]6 T& y$ \, Y6 |' B8 U
7.3 用正则表达式匹配更多模式 1194 L) O* d0 w6 x6 M/ w
7.3.1 利用括号分组 119
, V0 \. Y6 K( E- ^# k7.3.2 用管道匹配多个分组 120
% p8 f6 t( G* {& H7.3.3 用问号实现可选匹配 121
6 c% Q! H, e E. |* x* P& x& O7.3.4 用星号匹配零次或多次 121
6 Z7 S; {8 ]" m5 g7.3.5 用加号匹配一次或多次 122
. }0 N# H$ t% k7.3.6 用花括号匹配特定次数 122
3 n @: ]1 V. S# {+ J% E7 c, S# A/ O9 s7.4 贪心和非贪心匹配 123) p4 w- A/ g# x5 y: Q; T; }! y
7.5 findall()方法 124( p4 C0 q- M6 i! K# A
7.6 字符分类 124& R- K- c& {) A; j0 x: n9 W
7.7 建立自己的字符分类 125' K* }; Z k* v7 O6 Y5 P. L
7.8 插入字符和美元字符 1263 q9 k+ m7 x9 G+ `8 y2 q/ E
7.9 通配字符 126
: A+ O0 j, V" n7.9.1 用点—星匹配所有字符 1277 R: a n! a3 p% P, i$ A% I* a
7.9.2 用句点字符匹配换行 1274 p! R; A4 R- L4 V- z8 ]
7.10 正则表达式符号复习 128
7 U& a7 n( M. l* J) w' w+ G9 Z7.11 不区分大小写的匹配 128
0 @( e7 Q+ E: e- o. L7.12 用sub()方法替换字符串 129
" R2 H9 F! a0 Y8 G! T5 W# ~7.13 管理复杂的正则表达式 129
7 v; ]' f- o Y* N- d7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 1302 @3 x7 d9 w7 _
7.15 项目:电话号码和Email地址提取程序 130- i. f* K y! g) D8 F
第1步:为电话号码创建一个正则表达式 1313 |: ]; S" k) c6 V- O
第2步:为email地址创建一个正则表达式 132
3 _6 |. D0 }. M第3步:在剪贴板文本中找到所有匹配 132
6 {( g7 k8 c' \# Z; G第4步:所有匹配连接成一个字符串,复制到剪贴板 1334 `4 `$ X; C. M4 I1 l2 I0 H
第5步:运行程序 133$ B2 N7 J3 \. m/ E# z; m
第6步:类似程序的构想 134
9 t* w. @, p* V5 `- V7 l! O7.16 小结 134( B w$ b* G2 z; ^
7.17 习题 134
Y& B- w9 [2 }6 W7.18 实践项目 136
- a& q- C3 I9 H( M! E9 s6 Y8 r7.18.1 强口令检测 136' u, }5 |' t* {
7.18.2 strip()的正则表达式版本 136
6 U; C# p% p2 Z" h, D: ]第8章 读写文件 137+ W3 @0 V0 m! W7 ~
8.1 文件与文件路径 137: U3 B; c; T4 i. j
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
7 D6 ^+ M: W/ H8.1.2 当前工作目录 139
- x, v6 m) B- p: H% o8 A8.1.3 绝对路径与相对路径 139
3 d, o+ O6 x1 K: @$ E% K8.1.4 用os.makedirs()创建新文件夹 140# }% h: ? d2 x1 O
8.1.5 os.path模块 140& ]1 |& O6 @* k- t
8.1.6 处理绝对路径和相对路径 1414 g( Z& o6 T) n) F2 Z
8.1.7 查看文件大小和文件夹内容 1428 V! J; J( r4 ~ o
8.1.8 检查路径有效性 1433 N( v& H+ @- q! J* s6 g0 z& \8 u
8.2 文件读写过程 144
, |& l9 ^6 L1 l# M9 O C8.2.1 用open()函数打开文件 145) \' B! a3 T* d& b' Z
8.2.2 读取文件内容 145! ]( C3 D2 F3 x6 O6 u! G
8.2.3 写入文件 146
9 @$ F( P1 E) o5 G# U/ C8.3 用shelve模块保存变量 147
6 Q8 M- {% K; f6 ^6 w8.4 用pprint.pformat()函数保存变量 148
: R9 q( g9 V* v" `- h8.5 项目:生成随机的测验试卷文件 149/ A; E1 x( Q) Y! S" ~
第1步:将测验数据保存在一个字典中 149
" P0 o0 ]" F" Q8 E C第2步:创建测验文件,并打乱问题的次序 150
0 k( N* T. v g9 }, _" Z第3步:创建答案选项 1514 x8 U: v; z( j- H- E* {: Q4 x* w' d/ K
第4步:将内容写入测验试卷和答案文件 151" d) w" q* V6 N' C' T1 K; T8 S
4 h2 y4 L+ c6 L+ p' j
|