|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
6 s. O d, b \ ~0 M" w
& U3 }1 ^7 H% h7 R内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 , H4 q. v3 z% Q8 R4 m# h
" S' H, b$ p) Y# m: x" Z
& d d: u/ Z- g& n; |
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
# L& ?- k0 @/ h第1章 Python基础 3
. F$ d% R; A& ^8 n" _# s1.1 在交互式环境中输入表达式 3
- j3 v* }1 ?) _% b' T, \' B0 G0 }1.2 整型、浮点型和字符串数据类型 64 s3 P" q" q; n
1.3 字符串连接和复制 6" |" u( b+ b3 N
1.4 在变量中保存值 7
: w5 k8 |5 M2 @1.4.1 赋值语句 7! P$ O$ a+ K5 \% v! F$ [* q
1.4.2 变量名 9
% h: @5 Y! G# v+ y8 s5 n# a1.5 第一个程序 91 ^4 n" O# u3 r% C' z2 \- \' i
1.6 程序剖析 110 c$ X- y9 M" ]- o7 d' W
1.6.1 注释 11) _' A% J$ e) t. U* p/ T' V% h# |
1.6.2 print()函数 11
* J# G% r2 m4 J1.6.3 input()函数 114 P- d [+ ^. I3 [) ~! S$ y
1.6.4 打印用户的名字 125 _3 |5 i0 A9 [( b, C
1.6.5 len()函数 12
' u6 c; C$ t) D; h8 X5 x+ i1.6.6 str()、int()和float()函数 13
& E6 ^4 D( ?) \4 W2 L1.7 小结 15" A" F& a j( a5 M- S: W
1.8 习题 15
0 y1 f3 o* A9 U" f4 k0 G第2章 控制流 170 `. M+ @2 m6 b5 {: U
2.1 布尔值 18& L. b. T) f- a H. g/ S9 w, x
2.2 比较操作符 19% ?* l/ k/ {. b' h0 J
2.3 布尔操作符 20
0 W; U( f* R) j0 L6 Y' b6 v2.3.1 二元布尔操作符 20
2 `6 W7 m8 L X4 X( r2.3.2 not操作符 211 ]% }/ O6 J$ d \9 d; ^1 k
2.4 混合布尔和比较操作符 215 ^0 k. K0 I L! w
2.5 控制流的元素 22' R1 Z1 C& @* r+ x
2.5.1 条件 22
! q! k9 Z& y' @ i& T# `0 D2.5.2 代码块 228 ^5 p* Z' b# D; _$ \
2.6 程序执行 23* b! J) ]. a/ t3 w
2.7 控制流语句 23
4 U% u7 ~* P. U6 Q" b+ S2.7.1 if语句 238 k3 x: D2 D, @0 }3 m4 }/ } }
2.7.2 else语句 24, |9 M1 Q8 k3 f5 r% D
2.7.3 elif语句 25
+ |6 Y* r& e5 ]2 O1 I: C2.7.4 while循环语句 302 Y6 [* t8 ?1 S& @
2.7.5 恼人的循环 31: H9 ~" Z( s' |1 X( ^* E
2.7.6 break语句 33
, a# L# J% X" T2.7.7 continue语句 346 j, H4 |5 K5 n9 V8 k% m9 ?6 u
2.7.8 for循环和range()函数 37' K% r) ]3 ?8 K* x( n
2.7.9 等价的while循环 390 L! x) C* u+ G0 M. V3 c
2.7.10 range()的开始、停止和步长参数 39
3 p5 \; |& q: I3 P! v2.8 导入模块 40from import语句 41
1 [% T0 T2 B% o$ Y2.9 用sys.exit()提前结束程序 41- W7 c1 V( ~" a R% G+ J1 c4 X
2.10 小结 41
0 W6 [% V) \9 I$ C9 F- i2.11 习题 41; |! U2 r0 B7 g' Q, U
第3章 函数 431 @8 g5 ]# Z: y4 z
3.1 def语句和参数 44
+ @& q0 v4 {: K1 o6 f3.2 返回值和return语句 45
' I* w) V1 T5 s" M" g* j3.3 None值 46
; S7 Y# J7 v* L* l! T7 X3 h7 W# q3.4 关键字参数和print()474 o y- @; Y, `5 ~
3.5 局部和全局作用域 48
1 ~. Z7 P8 s; @6 l( n( t) n# D7 Z3.5.1 局部变量不能在全局作用域内使用 48
V6 H: Y Q6 |) E: }! J) C9 D3.5.2 局部作用域不能使用其他局部作用域内的变量 49
7 A9 V$ @* ?$ P( _1 U3.5.3 全局变量可以在局部作用域中读取 49( d+ d7 e5 ?% d8 A4 [9 X- D0 A
3.5.4 名称相同的局部变量和全局变量 500 g; L9 f) [) |; I' {$ f2 Z" B: z8 ]
3.6 global语句 50. m) w1 w. O2 y H
3.7 异常处理 52
* _2 g2 k6 o% b8 |3.8 一个小程序:猜数字 54& ~) X* ?7 ~. ]: X& K
3.9 小结 55
+ A$ X) |9 G/ u4 ]- W/ [8 _, A0 n3.10 习题 56
. ^8 t+ W# p! w6 [9 C3.11 实践项目 56
- o; a( H$ B: o G- j/ R3.11.1 Collatz序列 56: Q4 R; u6 O4 x
3.11.2 输入验证 57% S7 u/ t, B# d1 S
第4章 列表 598 l2 b8 l: r0 [/ C% }' O) _) i
4.1 列表数据类型 59
& J( k- m% N# K4 O( U4.1.1 用下标取得列表中的单个值 60$ e# \* m5 w1 r5 V" R
4.1.2 负数下标 619 W4 G3 A6 ?" ~* o. K: ~
4.1.3 利用切片取得子列表 612 \) s1 C% p: i
4.1.4 用len()取得列表的长度 62: V4 ~; f( a, J4 T, |
4.1.5 用下标改变列表中的值 62$ c$ U4 e1 p& m" B
4.1.6 列表连接和列表复制 62
+ Z* V) [8 ?& b* I4.1.7 用del语句从列表中删除值 63
: [1 Q+ Y- W. B7 z. g+ i4.2 使用列表 63' s4 _9 g( P9 K0 i
4.2.1 列表用于循环 64
) j4 c, C: P& B4 n2 w$ \1 G4.2.2 in和notin操作符 65
+ p8 Y! ^( ^: G9 y% B4.2.3 多重赋值技巧 66
# Z! D1 \8 z2 @$ }4.3 增强的赋值操作 66
3 U4 t4 @- K$ A8 w4.4 方法 67
. o5 p+ r" v- Q# S: o5 ~& H4 `4.4.1 用index()方法在列表中查找值 67: m$ ^+ }% p* B. ?0 _! [' ^( n
4.4.2 用append()和insert()方法在列表中添加值 68/ D8 ~1 y4 o6 o7 L2 C4 t! ^ {9 {
4.4.3 用remove()方法从列表中删除值 69$ {4 D- i) O" S5 F. T
4.4.4 用sort()方法将列表中的值排序 69
$ L; L( Z: {/ m; [: z4.5 例子程序:神奇8球和列表 704 U; b. v- j% l. e4 e6 ]
4.6 类似列表的类型:字符串和元组 71
^+ U) X' _( u4 v* S( u4.6.1 可变和不可变数据类型 72
& b7 k' [1 |& a- H/ m4.6.2 元组数据类型 73" n' R# e% C i/ B1 n
4.6.3 用list()和tuple()函数来转换类型 74
) o- }- B. u% o4.7 引用 75# @& J% ~" {. H% m
4.7.1 传递引用 769 z, r, q9 } y+ M2 l! H* C$ R
4.7.2 copy模块的copy()和deepcopy()函数 77
& X! f$ f& C1 S4.8 小结 78- v2 v& N( J, x( E" @; n
4.9 习题 78
1 U! ]9 g5 _5 S9 \3 W7 Y: \! E4.10 实践项目 79
" u9 h2 O8 M$ Y2 A7 }4.10.1 逗号代码 79
0 A! I/ \. q _: |3 {9 Q6 o9 l0 [- G1 i4.10.2 字符图网格 79
$ ^0 i+ h7 d8 D5 F* p8 l. z第5章 字典和结构化数据 81" j$ ~2 w) i' W" X! u, W; [ c
5.1 字典数据类型 81
" @" ~9 O2 r! J% w$ J5.1.1 字典与列表 82
& Y0 B9 M( c" m! A0 E5.1.2 keys()、values()和items()方法 838 ~7 G2 D' H% s' Q
5.1.3 检查字典中是否存在键或值 84
) Z5 }$ L+ T, c- Z+ a5.1.4 get()方法 84+ |( m2 N9 }' J8 k
5.1.5 setdefault()方法 855 e4 Y# f% V5 W0 s! \+ C
5.2 漂亮打印 86, n+ Z- _/ Y/ g+ M$ f* u. f6 B3 a% ]
5.3 使用数据结构对真实世界建模 87
' r" B, L; [+ C! C- q; A5.3.1 井字棋盘 88
- U( c2 L% \8 o* P, M- O0 v3 W5 ]5.3.2 嵌套的字典和列表 91
6 `3 S& x( Q. I& w3 @2 t5.4 小结 922 ~ y2 G7 U+ r# Y5 s: _
5.5 习题 93
# p8 k4 M/ c5 V$ \" _6 ]# v# s5.6 实践项目 932 n7 G1 v% ^; z6 S0 S: F! g
5.6.1 好玩游戏的物品清单 93. a% `; b! j8 U
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94$ w. u/ D5 R0 [4 i# H
第6章 字符串操作 95
' @6 y2 t$ @5 \( c5 E6.1 处理字符串 95
- ]) y; c5 i' K) g l6.1.1 字符串字面量 95
& K" j; `; g9 a9 m8 R6.1.2 双引号 96
& P3 {5 G5 i' |$ U6.1.3 转义字符 96
& K/ K/ g0 K' \7 s4 C6.1.4 原始字符串 96
* @ C/ ?8 M9 X/ X6.1.5 用三重引号的多行字符串 97
& o# q& j: X4 w) i9 Y/ D6.1.6 多行注释 974 U5 Q. i# X( W0 p6 [
6.1.7 字符串下标和切片 98
) K$ h+ o1 ~ h' d4 u) f6.1.8 字符串的in和notin操作符 98
. F; b' L0 c7 D' O2 G7 {8 {6.2 有用的字符串方法 99
) l+ C6 q, ^, H1 ^6.2.1 字符串方法upper()、lower()、isupper()和islower()99
6 Z6 F0 k O8 V! w6.2.2 isX字符串方法 100
1 b- K- Y' q. p* g6.2.3 字符串方法startswith()和endswith()102
* z0 H1 o4 d" y" Y6.2.4 字符串方法join()和split()102
5 \1 u0 [4 `! W$ z" S6.2.5 用rjust()、ljust()和center()方法对齐文本 103
8 r4 _8 S, t. P6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
. f' N! Y% a9 _: K6 p, n. m) [6.2.7 用pyperclip模块拷贝粘贴字符串 105
- `7 n# I* ^$ j. _; V3 o6.3 项目:口令保管箱 1068 Q# u, W' V- j" {+ H
第1步:程序设计和数据结构 106
0 A1 k" W) W" N' k" t" u% x/ X第2步:处理命令行参数 106
9 h7 D3 j, L4 ~9 r: a第3步:复制正确的口令 107
. J' X! L4 R; `. c6.4 项目:在Wiki标记中添加无序列表 108; Q1 J Z6 v$ s4 m0 }. ]$ ^ \
第1步:从剪贴板中复制和粘贴 108
- o$ N0 {4 I+ i+ O# T第2步:分离文本中的行,并添加星号 109+ L( ]- N r3 M4 [
第3步:连接修改过的行 109
/ P7 `4 @) o# Y5 i6.5 小结 110
: u# x1 j5 Z$ X8 W9 J. D2 R) b6.6 习题 110
7 I* [ o/ C" b" a* M6.7 实践项目 111
1 Y3 _/ u$ T- T. Y表格打印 111
6 N4 u' c( a* Q" ^5 z# E) Q% Y第二部分 自动化任务2 G% l. S- y9 }* Q( O4 Y2 \
第7章 模式匹配与正则表达式 115" O7 N+ w# ?3 w$ l, |$ Q
7.1 不用正则表达式来查找文本模式 116/ ~$ m# j; O6 x% u7 Z( d# U$ O" W
7.2 用正则表达式查找文本模式 1174 l+ ^1 |4 W4 T- c" B
7.2.1 创建正则表达式对象 118
8 o( k% q; a. r9 D& M: V2 V7.2.2 匹配Regex对象 1188 Q5 z$ W- z% k; r" W! E
7.2.3 正则表达式匹配复习 119
9 k, f& |1 H" T& f. t$ q- D* N7.3 用正则表达式匹配更多模式 1194 I0 S0 n; V3 |' w
7.3.1 利用括号分组 119& ~# h1 W+ Y1 q# D( e
7.3.2 用管道匹配多个分组 120
; U* Z$ }$ ^) [: H7.3.3 用问号实现可选匹配 121( K1 J6 D0 T) b; l5 @$ l
7.3.4 用星号匹配零次或多次 1215 F% [5 o# T* @, s2 W
7.3.5 用加号匹配一次或多次 122
% d" d: [% |3 ^+ V0 \5 F7.3.6 用花括号匹配特定次数 122$ @- h/ d8 u5 J. F: M7 f
7.4 贪心和非贪心匹配 123
5 i, K1 O* ?, |* r/ \% z. J7 y) [7.5 findall()方法 124
) [' [( _" ^ h( O! f( i V% F7.6 字符分类 124- q, X c- }4 s* P) e
7.7 建立自己的字符分类 1252 g. C6 M0 ?. L3 a& p' S! q5 `/ c
7.8 插入字符和美元字符 1262 p0 B2 r4 ]4 Q) e; y& \% a' _
7.9 通配字符 126
- Z4 P7 `/ v8 v( ~5 y3 ^7.9.1 用点—星匹配所有字符 127# ~# b9 o1 P+ X# v2 F6 M8 w
7.9.2 用句点字符匹配换行 127
3 c9 t7 B% f" `4 q! D7.10 正则表达式符号复习 128
, X$ E ?5 Z: Y9 a" n$ }5 f7.11 不区分大小写的匹配 128
2 d: I$ i$ f- `# ^9 m% P7.12 用sub()方法替换字符串 129& x0 B: p' |* c. |
7.13 管理复杂的正则表达式 129) q0 ^$ }' G8 J) ?0 ~0 R T5 E/ G5 u% k
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
$ z( D! O, z5 `, z7.15 项目:电话号码和Email地址提取程序 130
# C. {: ?6 b1 Z% \6 b第1步:为电话号码创建一个正则表达式 131# A& @) C# E" Y$ y# A
第2步:为email地址创建一个正则表达式 132: ]- p/ k5 m0 J/ W
第3步:在剪贴板文本中找到所有匹配 132. p: r3 S i# f V. q- {
第4步:所有匹配连接成一个字符串,复制到剪贴板 1336 `( X! H! z1 w
第5步:运行程序 133
, m2 I0 O: C+ G! i4 y& d9 U0 O第6步:类似程序的构想 134
9 n6 Q8 x' ]8 M8 P# w; `( \! C" t7.16 小结 134: T# _ Z; m' ~' G: T, S
7.17 习题 1348 F9 {$ E5 G/ i1 b9 m K9 @
7.18 实践项目 136% R* W( y; i7 P0 ~5 C
7.18.1 强口令检测 136
% V% c P) M" n. z7.18.2 strip()的正则表达式版本 1360 n; o+ {2 [9 w" A8 E
第8章 读写文件 137$ e$ S. S& a+ [5 v. `1 K4 H* S7 ~
8.1 文件与文件路径 137
: L5 N8 C" V! I9 c) z2 }8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 1384 {+ \# \! V2 T6 D" c: T# Z% a
8.1.2 当前工作目录 1396 z% R: X, k- e1 x
8.1.3 绝对路径与相对路径 139
1 @/ z( J2 }1 D; c8.1.4 用os.makedirs()创建新文件夹 140
$ y" ~5 z, U Q7 ?8.1.5 os.path模块 140
# F+ T% U) ^% G0 ^% S- }, ?8.1.6 处理绝对路径和相对路径 141 Q, o! o4 j5 ?9 k4 f2 d
8.1.7 查看文件大小和文件夹内容 142
& y/ D/ M' S7 c) X8.1.8 检查路径有效性 143
5 y1 o3 w6 V- N$ K& r8.2 文件读写过程 144
2 ~/ X5 V7 Z; e7 X- Q# i* `/ G8.2.1 用open()函数打开文件 1455 B7 A! d8 H/ @9 \' ~) z' r
8.2.2 读取文件内容 145
; y. {8 S0 ^% }) k, y+ I/ u8.2.3 写入文件 146
; L1 _2 P7 v" B: | O8 o5 R' _8.3 用shelve模块保存变量 1473 _! e; Q8 Q* x4 x w `
8.4 用pprint.pformat()函数保存变量 1484 N) O* V( ?# W
8.5 项目:生成随机的测验试卷文件 1496 q7 W( c2 l9 p! G) o
第1步:将测验数据保存在一个字典中 149; v5 s/ ]( a# @
第2步:创建测验文件,并打乱问题的次序 150
3 o, M6 X+ q1 ~第3步:创建答案选项 151$ M7 u/ ^# u- j8 Q
第4步:将内容写入测验试卷和答案文件 151
7 z' X: I! M' X* w) s! Y6 n+ J" [7 j3 l% C2 J
|