|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma ( k0 t- ?9 Y( p2 y* d
0 `0 p/ A: v8 [& u0 M4 \1 K, {内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
& E9 [! N5 ?1 M; a% @4 [
6 W6 f9 Z1 e; @) g1 @
! T" g r7 S* l$ V* v8 @作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础9 l0 N# N# j8 y; |4 N" O
第1章 Python基础 3% m' ?3 I( r9 Z, E/ P& @5 K4 e; D
1.1 在交互式环境中输入表达式 3
0 S$ Z% ]( Z) ?% ]3 }1.2 整型、浮点型和字符串数据类型 69 m ^& G! ]: l0 M; G) q/ R
1.3 字符串连接和复制 6
. N9 T* }' ^: v% n1.4 在变量中保存值 7
0 K9 f' [$ l i& Q1.4.1 赋值语句 7
3 {: z; I1 |# D- T1.4.2 变量名 9
. u$ [. V, n; [ x6 c1 E, N# C; N$ o1.5 第一个程序 9
3 n p. v' S4 ^% g; C1.6 程序剖析 11: i6 Z; l7 Z" A' B1 P: {8 }8 l( X. ^
1.6.1 注释 11
( {1 ?4 {) }, O% {( C1.6.2 print()函数 11
4 D- \. W6 |" r7 G. ~9 | N1.6.3 input()函数 115 Y+ m0 a O3 z5 {9 n
1.6.4 打印用户的名字 12) l5 @2 u* Q: ?! p5 x9 U
1.6.5 len()函数 12, Y! q2 p* Y/ u- ~% g
1.6.6 str()、int()和float()函数 130 O+ {; e3 d$ _, X) Y# f
1.7 小结 15
1 s6 Y. o; V( O3 y$ J3 ]) l3 i1.8 习题 15* d8 e6 v1 q- }3 A9 O0 y
第2章 控制流 174 {1 @# I9 Y: E5 X5 D5 y1 v" K1 p
2.1 布尔值 18
) i: U! A" ~) Y0 @& z2 z2.2 比较操作符 192 n: S+ `# s9 Z% n( |7 @
2.3 布尔操作符 20. |1 o0 o" q. N7 M6 X8 D
2.3.1 二元布尔操作符 20 R0 Q: X2 s& a; O }
2.3.2 not操作符 21
" r# E* u' z) Y6 V" F) t) d1 c9 Q' p2.4 混合布尔和比较操作符 21
+ G- X- B; U. k4 m2.5 控制流的元素 227 W- I, A& x+ B
2.5.1 条件 22! Q; o0 g' Y& A+ w1 k, v: E
2.5.2 代码块 22
& U7 z- k; p; w5 P9 l2.6 程序执行 23
" F2 E) p# y7 p% d; w2.7 控制流语句 23
! p4 T* G& r+ `( L) ^7 Q2 X. ?2.7.1 if语句 23
% P9 Q3 M; e* Z0 l& o2.7.2 else语句 24
3 a |! }6 Z% d; e( |: W2.7.3 elif语句 25
& {/ z" J9 P# y2.7.4 while循环语句 304 E/ a* K6 P, a5 U
2.7.5 恼人的循环 31' P0 g Y. r" o- V
2.7.6 break语句 33* l8 z, K3 s" b
2.7.7 continue语句 34
. |, W7 z- I% \: o2.7.8 for循环和range()函数 37
1 y8 P# A4 q; h, s2.7.9 等价的while循环 39, ^! D/ x0 e- @) [; Y2 G' @- D
2.7.10 range()的开始、停止和步长参数 39
9 q5 t2 G1 ?( o2 S7 ]2.8 导入模块 40from import语句 414 l, H! j; S$ P: o8 @/ u8 W' s
2.9 用sys.exit()提前结束程序 41; _/ _& u5 L7 {% f2 ?& [
2.10 小结 41
' P/ ^$ D: X4 z- M2.11 习题 41
$ U C1 `! V- [% J5 D7 q第3章 函数 431 ~9 o! E% W+ c! _0 y4 m/ M% K4 j
3.1 def语句和参数 44
8 e$ n8 w8 {) ^& ?3.2 返回值和return语句 45
* ^; g2 f4 i( {7 X8 @$ F2 d3.3 None值 464 F+ u( w; {+ m5 P3 x k8 D
3.4 关键字参数和print()476 _- l1 _5 P1 W2 R
3.5 局部和全局作用域 48
2 @# g, o; b; w' s# V+ R% M9 K3.5.1 局部变量不能在全局作用域内使用 48 S- U& _/ N. s& T1 {+ Q' o
3.5.2 局部作用域不能使用其他局部作用域内的变量 49
- A5 w- ^4 a; y- H3 ~0 {3.5.3 全局变量可以在局部作用域中读取 49
5 c& F' s% Z( b# p% D' x5 C3.5.4 名称相同的局部变量和全局变量 50
* j5 n- v4 h" ?- C% D3.6 global语句 505 l2 s) Y% ?0 w8 B5 h; e1 { [
3.7 异常处理 523 M% r. o# E7 G' c3 s9 f5 S2 n
3.8 一个小程序:猜数字 54
3 ~% J# H- z' i! f$ e$ Z3.9 小结 55/ n- ^& l5 F% H) U: u
3.10 习题 56
6 z. y8 v+ j* U. x/ e% d: u3.11 实践项目 56
3 [6 l' y$ V$ M, m+ Q3.11.1 Collatz序列 56# b1 F" R' g5 ?1 o& u# d
3.11.2 输入验证 57
' R) ?, Z& `% x, J7 c3 e% h第4章 列表 59: l" w9 i1 S5 T/ e8 `8 F b
4.1 列表数据类型 59' p1 E& `+ x3 y' ^ u
4.1.1 用下标取得列表中的单个值 60; M: F- Q5 j1 q; g
4.1.2 负数下标 61
8 _! ^5 b, d7 L2 o4.1.3 利用切片取得子列表 61
+ A( m' L. Q; y9 e# p! D, |/ {' _4.1.4 用len()取得列表的长度 62
L# t2 ~/ O' q; ~4.1.5 用下标改变列表中的值 62
! _$ J: C+ \! |% t- z. ]) }4.1.6 列表连接和列表复制 62( v8 u( v/ [' s3 s" m
4.1.7 用del语句从列表中删除值 63
! h: h5 C4 v7 s; P7 i3 [( ]7 _4.2 使用列表 63
3 ~% v# q1 F4 l) w. Y4.2.1 列表用于循环 64
9 ]2 @7 g5 I5 S( t1 u# i+ b. K4.2.2 in和notin操作符 65 l& R" ~2 f' g# W" F. q. T4 i
4.2.3 多重赋值技巧 66
; K1 K3 J" h+ D" l$ q2 d( R) a7 D4.3 增强的赋值操作 665 }, N! R( L2 M T
4.4 方法 67
% ]& }/ B' i2 L4 d! q% V4.4.1 用index()方法在列表中查找值 67
9 _. i4 S9 ~& m$ i4.4.2 用append()和insert()方法在列表中添加值 68! ]5 M0 `3 l; L8 ~4 S7 \
4.4.3 用remove()方法从列表中删除值 69' R% k; \4 _. `* [ @
4.4.4 用sort()方法将列表中的值排序 69
; D2 W/ T$ ]0 e% }+ ]4.5 例子程序:神奇8球和列表 70
* R3 S% b% M9 i) L( c6 Z4.6 类似列表的类型:字符串和元组 71
4 v) E. q% K1 l3 _& w4.6.1 可变和不可变数据类型 72
' i; Y9 B1 K+ N% _1 L0 A E/ x# _4.6.2 元组数据类型 73& Q4 }9 X, U3 N& B$ S! e
4.6.3 用list()和tuple()函数来转换类型 74* O- U' V& G) k3 j/ s; s
4.7 引用 75* | F) P$ a8 ]" V
4.7.1 传递引用 76
3 L+ Z& W: j& y/ W( I6 }7 X7 [/ o4.7.2 copy模块的copy()和deepcopy()函数 77! D/ M0 _5 K7 T# o1 u6 [3 S
4.8 小结 78! h$ P- ?* P _. g4 t* t
4.9 习题 784 E/ x. a8 F' I0 ], |; i, D
4.10 实践项目 796 b# v) e* T9 w' P
4.10.1 逗号代码 79
# ~" P0 w" ?# `4.10.2 字符图网格 793 ?% S7 g) ?! S) v* }% m7 n8 g% X
第5章 字典和结构化数据 81
% N4 }9 P% ^3 Z7 R& @ n( I5.1 字典数据类型 812 h: E: T+ M/ B* O
5.1.1 字典与列表 82+ W* T6 b9 D4 g1 j0 H* C
5.1.2 keys()、values()和items()方法 838 k0 k) }% y6 ^8 b! R3 ?% R: N! }' c# L0 A
5.1.3 检查字典中是否存在键或值 84: U& x9 y% a9 I
5.1.4 get()方法 84
/ C+ \. N" r$ j3 b. g1 ?; I5.1.5 setdefault()方法 85
: D r8 E3 t; t: T( W, F& [5.2 漂亮打印 86
! z* M$ g9 b7 I5.3 使用数据结构对真实世界建模 87
- M8 X& B+ x2 O& l' A) T/ ^5.3.1 井字棋盘 88
0 f5 x: E i: I- f0 F" p5.3.2 嵌套的字典和列表 91' {! p* z$ u) K, G n
5.4 小结 92
2 r W3 C9 A. w7 k4 R3 ?5.5 习题 93* G( e) G# ^- ^) h- Q
5.6 实践项目 93
6 w% @' T+ h' B V5.6.1 好玩游戏的物品清单 93
) p v3 \5 x; j$ x9 i2 a* ~2 m5.6.2 列表到字典的函数,针对好玩游戏物品清单 94
% \$ l4 ~5 D$ C: Y4 W第6章 字符串操作 95/ B) e; R/ \1 E
6.1 处理字符串 95$ y u) p1 k0 R& Z) e
6.1.1 字符串字面量 953 x5 ~. y$ s& p, d
6.1.2 双引号 96
( I% Q9 O2 m. Z" c% q" @+ K6.1.3 转义字符 96) D- G5 j* V# l" I% h0 s
6.1.4 原始字符串 96& p+ ?- y7 Q! h' j7 G
6.1.5 用三重引号的多行字符串 97
" \! j( |) ^( f+ e- T6.1.6 多行注释 97
! O9 H& X3 \) P7 X8 a w5 _6.1.7 字符串下标和切片 98# R! I' }) ]5 S$ B; W7 I! U& S
6.1.8 字符串的in和notin操作符 98! r1 `/ z& y0 U% c5 w+ w
6.2 有用的字符串方法 99
1 y1 ~, w4 B1 [7 Q: {6.2.1 字符串方法upper()、lower()、isupper()和islower()99$ g0 q8 M4 l9 Q; d
6.2.2 isX字符串方法 100# D7 t% ?) Y# H1 h3 R
6.2.3 字符串方法startswith()和endswith()102
# g# M5 E* B8 x' |. _0 b$ }! `6.2.4 字符串方法join()和split()102
1 O: \( f0 e7 Q* ~! w$ K* W4 L% `6.2.5 用rjust()、ljust()和center()方法对齐文本 103% g# i. e; J) P" }+ ?
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
& K/ t4 R8 C6 j6.2.7 用pyperclip模块拷贝粘贴字符串 105) K7 E, }# k! I' y0 O% P0 o6 ]
6.3 项目:口令保管箱 106
7 Y( s0 o) e; D! ]3 f, O2 a第1步:程序设计和数据结构 106% V) s) q0 m6 j9 f! `( m/ [7 J
第2步:处理命令行参数 106. a: Y# F) \- y4 n0 _) Z
第3步:复制正确的口令 107* O% o e1 L8 k8 K7 [
6.4 项目:在Wiki标记中添加无序列表 1085 d" T% O! b6 c9 M. q0 q
第1步:从剪贴板中复制和粘贴 1081 s0 B9 |/ h* X4 F$ V
第2步:分离文本中的行,并添加星号 109
- B7 y: E. w Y! n/ x第3步:连接修改过的行 109
* U0 Q: D5 j" @1 X6.5 小结 110
# ?6 q) z) o/ x& x2 {7 J6.6 习题 110' Z6 i( z4 z/ T% g( }( r
6.7 实践项目 111* P) t; W$ J* F- m0 Z+ r7 } s7 W
表格打印 111
% ~1 J* {$ x. M" V: m# g! w第二部分 自动化任务
l8 |+ s3 x6 U1 h第7章 模式匹配与正则表达式 1156 D+ T8 P6 Z( }) {1 J
7.1 不用正则表达式来查找文本模式 116
) G- p4 x1 R% [- X7 ~7.2 用正则表达式查找文本模式 1172 J0 \7 ~, D/ ^1 ]8 [% F7 P
7.2.1 创建正则表达式对象 118
" ]9 n, o) {$ f1 e% B; f, t" O7.2.2 匹配Regex对象 118
o1 ?% [3 `3 g% `+ n7.2.3 正则表达式匹配复习 119; g; k& o a$ K& u O+ B* a
7.3 用正则表达式匹配更多模式 119
$ X! {5 C3 F4 T9 I7 M7.3.1 利用括号分组 119! V: p+ L7 P# F5 ~
7.3.2 用管道匹配多个分组 120
0 W& H4 l- n( y4 |7.3.3 用问号实现可选匹配 1217 ]. t# `; L! x; B5 q( B6 ]4 j
7.3.4 用星号匹配零次或多次 121. O( d/ c5 `2 \0 X8 M6 N! p6 B1 C
7.3.5 用加号匹配一次或多次 1226 s: ^& M: J: D* A' G! m6 Y
7.3.6 用花括号匹配特定次数 1220 z* B! r$ d$ q; n2 `
7.4 贪心和非贪心匹配 123
0 q* f) H n4 L/ r7 E% O% j7.5 findall()方法 124+ c# J0 d2 P% Z7 v2 {1 g
7.6 字符分类 124( }. A1 _7 J) k+ A! `8 ]
7.7 建立自己的字符分类 125
1 K! a1 K% V$ P" r7.8 插入字符和美元字符 126
4 y- I+ n$ q& k8 }) O7.9 通配字符 126# H% `! a4 I3 N4 N/ {6 P2 @
7.9.1 用点—星匹配所有字符 127
6 H" P. r: b! V0 j" M7.9.2 用句点字符匹配换行 127
2 L$ H/ O7 E& d7.10 正则表达式符号复习 128
' E, h: g8 Q* w: W7.11 不区分大小写的匹配 1286 C, ^9 U8 u9 o2 K# i" s7 e2 A
7.12 用sub()方法替换字符串 129( m9 d- p x& ~% h
7.13 管理复杂的正则表达式 1293 b4 m$ T( O% U
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
5 p6 q; e* O: M* m2 _- o, ^7.15 项目:电话号码和Email地址提取程序 130
n1 E% ^ o* [! M第1步:为电话号码创建一个正则表达式 131- i+ H0 W+ o7 r8 Z$ C
第2步:为email地址创建一个正则表达式 1329 |+ r; z: U" E* L1 D' c3 i [
第3步:在剪贴板文本中找到所有匹配 1325 |5 Q" ]; D4 d" r3 w' T* a/ ?$ I
第4步:所有匹配连接成一个字符串,复制到剪贴板 1330 _8 h0 o* V% G& r/ m3 {1 [
第5步:运行程序 133* y- _) C. s1 E% k7 w S
第6步:类似程序的构想 134" y* f1 |7 [' X
7.16 小结 1340 m. t8 {* j1 Z+ H4 ]
7.17 习题 134" } X) M3 `. B/ l3 d. I
7.18 实践项目 136+ e2 V7 W/ I" d' A) T& g! P
7.18.1 强口令检测 136# |( U) k* K& H1 W/ t+ W3 ~
7.18.2 strip()的正则表达式版本 136: O8 R1 J& T1 ^) [2 c' I m! ?, |
第8章 读写文件 137
- [3 q' u5 d H v8.1 文件与文件路径 137
% q/ T4 G8 H# v! E+ N8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
* j; D W/ z. c# J8.1.2 当前工作目录 139
2 o7 u/ q4 @! N$ D- l8.1.3 绝对路径与相对路径 139
2 f# k' n; K+ P" ?5 Q8.1.4 用os.makedirs()创建新文件夹 140
5 u9 Z' f. \1 t' j8.1.5 os.path模块 140
/ p% b9 R' I, l* v3 }8.1.6 处理绝对路径和相对路径 141
: }: \$ ~( P+ `: g8 {: @8.1.7 查看文件大小和文件夹内容 142
# q) K; z$ I2 n8.1.8 检查路径有效性 143% o ?- w$ p; A2 N' a( j
8.2 文件读写过程 144
) z* ?9 L+ Y6 S- f8 }; G2 |8.2.1 用open()函数打开文件 145
' D3 W M' }* [+ m8.2.2 读取文件内容 1454 `. t/ ~7 Y# R* ~3 T8 Y! m
8.2.3 写入文件 1469 e" s, ^/ l7 v, O6 ]6 [+ K
8.3 用shelve模块保存变量 147
2 u6 [, a- B; Z8 f! x8.4 用pprint.pformat()函数保存变量 148
4 c1 o# i& ]% I& u4 g3 d L& O8.5 项目:生成随机的测验试卷文件 149
d1 u. b. i. x% l5 _第1步:将测验数据保存在一个字典中 1491 N" K5 L" M& O# r6 H0 L
第2步:创建测验文件,并打乱问题的次序 150
5 J: W3 ]0 M; }第3步:创建答案选项 151
1 S0 j9 G/ J+ A( @$ l3 J7 [第4步:将内容写入测验试卷和答案文件 1518 |& ^2 i g5 i% U
+ l# ^, q. L4 ]. f- }% O7 Z* P |