|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
8 _! I: `" l4 Z' x7 W3 o8 R9 h4 h7 S$ `1 A
内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 / y" G; H2 e [9 b: c
+ I0 n/ r$ o2 A4 r& Q! b
6 x, A6 g8 P( U0 I# \& ?: s作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
1 @1 J8 L1 y8 e第1章 Python基础 36 v+ K: v m# I' l. \( {) Y9 Z
1.1 在交互式环境中输入表达式 3
% W0 i! E+ h8 b! L5 h1.2 整型、浮点型和字符串数据类型 65 V7 O1 B( x _. t0 @, C! W
1.3 字符串连接和复制 6
, H9 Z4 i0 |9 a0 d+ W# F1 ?1.4 在变量中保存值 7
2 k7 v" H6 c0 Y2 r% J) D1.4.1 赋值语句 7% o6 L* r1 i- M# l l
1.4.2 变量名 9$ ?4 I2 ~8 P; t6 c5 }. `& m4 s
1.5 第一个程序 9
. B6 P: E" L1 {' e% v- ^! v1.6 程序剖析 11
G9 O5 \$ B: J% y8 z5 W5 F* y1.6.1 注释 11
( n0 o% W. @! c1 @7 S1.6.2 print()函数 112 F6 }4 U# t. P5 X5 k8 @% B1 K. B
1.6.3 input()函数 11
8 |+ C0 C4 y @! _7 j1.6.4 打印用户的名字 12
2 t; o' Q- p; y/ ^% f. R7 b% f1.6.5 len()函数 12
" r. f, T( H. e% o" q1.6.6 str()、int()和float()函数 13
! x4 d" [* Q2 M6 I. X# P( c1 H1.7 小结 15
% u3 C- d% M% ]" H6 z1.8 习题 15; U; @0 V: r3 n; e1 ^: j
第2章 控制流 17
0 U3 | X- n; j( p0 l' f( X: ~2.1 布尔值 18
# h7 G' _* q4 g) I0 [2.2 比较操作符 19
0 R$ G6 i7 A" @6 S2.3 布尔操作符 20
4 i8 a; z4 r. k+ f+ t1 X8 f+ E* U; G; \2.3.1 二元布尔操作符 20
9 [2 F- t4 M- X' \) S2.3.2 not操作符 21+ H; S8 [9 P; T4 N9 B- F" Q* \
2.4 混合布尔和比较操作符 21( i6 [3 S9 A' c
2.5 控制流的元素 22! D0 h A* D2 W* g7 G
2.5.1 条件 22
2 A. W5 ]- `4 ]2.5.2 代码块 22
* Z& [1 a: ]( c2 {, y2.6 程序执行 23# ~/ y8 f0 b! e2 v
2.7 控制流语句 23& u8 d# g& ? s5 ~3 g B" s& A
2.7.1 if语句 237 H7 j1 j, L, L7 x
2.7.2 else语句 24 h! _3 u" C7 j1 y+ f b8 |( ~
2.7.3 elif语句 25
% S0 u. D) ?4 B' I. ^: n1 c2.7.4 while循环语句 30
4 A, u( L" e: a& r) \1 O2 y2.7.5 恼人的循环 31
$ C, f4 E: j$ k+ U2 h1 B2.7.6 break语句 333 `- M, z( d& j2 V% } V
2.7.7 continue语句 342 Y2 b) l1 z2 [. A- M
2.7.8 for循环和range()函数 37
1 i0 c4 ~. {/ Z3 i E" l2.7.9 等价的while循环 39
- x% B5 x& m& _; U* X7 j' e- o2.7.10 range()的开始、停止和步长参数 39
, v4 [, Q' y% A2.8 导入模块 40from import语句 41 F9 [# S: @# ^0 p8 r
2.9 用sys.exit()提前结束程序 41
5 O ~; B# `) p7 N: f! `% D! P2.10 小结 41$ l& U9 R% e% c! ]2 j
2.11 习题 41
0 \) Z8 p! _7 S U# {第3章 函数 43
$ Q! t |- q2 O) z4 A( p( L3.1 def语句和参数 44
y. p& Q" _' Z! \. d3.2 返回值和return语句 45
8 B% F9 |1 v) ?. A G! ^. i9 G, E3.3 None值 46
9 Y/ p* M; R1 {3.4 关键字参数和print()47; ]& M6 b% h9 M4 Z6 w, g7 G
3.5 局部和全局作用域 48
: b' X: Y5 K5 e3.5.1 局部变量不能在全局作用域内使用 486 G) }0 B# E. m* b- ~
3.5.2 局部作用域不能使用其他局部作用域内的变量 49* O' o" X6 e; z& e
3.5.3 全局变量可以在局部作用域中读取 49
6 V! D$ Q8 K$ g3 s& w& i$ n3.5.4 名称相同的局部变量和全局变量 500 D5 Z( H8 n; s( T$ h& U1 v
3.6 global语句 50
, q; ~# Y" V5 H" F5 w5 @3.7 异常处理 52
5 x/ k _$ C2 Y3 @3.8 一个小程序:猜数字 543 ~) k* K6 G. D# ?& Y! y3 v
3.9 小结 55) n Q9 n5 Z0 J% u5 q
3.10 习题 56
$ G% X( I3 W8 ], J3 b/ m7 Q3.11 实践项目 567 O9 ?: ~0 R1 t' S7 ^2 M+ A& b
3.11.1 Collatz序列 56 V6 M; o( X: d% I. w
3.11.2 输入验证 57
& s* o6 k, z: c3 |第4章 列表 59- |& x. |$ X2 t/ j! W5 }) y
4.1 列表数据类型 59; G! g' X7 H% @2 L3 \8 A, W: F3 Y
4.1.1 用下标取得列表中的单个值 60. y9 {: e. Y/ N$ ?4 O% T' d- D
4.1.2 负数下标 61
" t L$ E9 b: R+ A4 C4.1.3 利用切片取得子列表 61
8 U/ N1 n- V" a! G' c/ L1 W8 p4.1.4 用len()取得列表的长度 62
5 [( }% S* E9 R# P4.1.5 用下标改变列表中的值 622 G; s7 U& K* [# w
4.1.6 列表连接和列表复制 62& `- H; H) x$ c8 w* v' K9 @9 ~
4.1.7 用del语句从列表中删除值 63
6 U* r6 Q$ a4 n( C$ C3 T4.2 使用列表 63, i9 Z6 N2 ] }+ e* B# e, I
4.2.1 列表用于循环 64
9 Q% [0 e0 o2 g) x7 T J2 {* L% y4.2.2 in和notin操作符 65
2 p; G4 X5 S {# {/ h F9 c4.2.3 多重赋值技巧 66
6 B4 I+ F- U9 [% [( Q1 A4.3 增强的赋值操作 66
+ V: m5 K* U# E: H0 ?* X0 a3 ?4.4 方法 67" h" I% `. q3 l8 m5 E8 c M9 c" o
4.4.1 用index()方法在列表中查找值 67; O8 G: |/ z& |9 P J- k
4.4.2 用append()和insert()方法在列表中添加值 689 k2 w8 q7 Y) \: v( U k2 P
4.4.3 用remove()方法从列表中删除值 693 u. A* {8 g' z4 s" `8 e) H8 i- m
4.4.4 用sort()方法将列表中的值排序 69
7 m2 m# d- h+ R4.5 例子程序:神奇8球和列表 70
+ X L, U) H$ f4 \4.6 类似列表的类型:字符串和元组 712 V3 J/ i/ R1 z
4.6.1 可变和不可变数据类型 72
2 {7 d3 U R+ B; m6 {4.6.2 元组数据类型 73
) `" p3 b# E: M9 y5 o& u9 s4.6.3 用list()和tuple()函数来转换类型 74
# r9 Q2 ^# V. j. Z1 E4.7 引用 75
7 {) h. M9 H$ l% e7 o4.7.1 传递引用 76/ [3 @0 @9 M6 E; n9 m
4.7.2 copy模块的copy()和deepcopy()函数 77/ A2 ~: R! Y+ F
4.8 小结 78% P# ]; { J) S; R# _) O; s
4.9 习题 78' O7 K7 [' t5 k) w
4.10 实践项目 797 y# E. I5 x' `6 B
4.10.1 逗号代码 79
- ^! x5 A- c" C& I' X4.10.2 字符图网格 79* v7 w- [3 ]) \; x4 C1 V4 {- W
第5章 字典和结构化数据 81
0 B. g7 h; S5 b& j9 o! X5 a+ X5.1 字典数据类型 81
5 T3 b |0 W7 |" u5.1.1 字典与列表 82; }, w, Q, v) C( b9 l, V
5.1.2 keys()、values()和items()方法 83( _1 i. x* A/ a3 T
5.1.3 检查字典中是否存在键或值 848 P: J u& ^' t0 T' _1 u
5.1.4 get()方法 84$ d9 L: q# z6 e% I% b' @/ U
5.1.5 setdefault()方法 85! B4 J0 J3 R H8 \; O5 i5 Y
5.2 漂亮打印 86' |" g' n- w: d \
5.3 使用数据结构对真实世界建模 870 ]+ u" x/ u& P/ q7 v/ R$ r" L
5.3.1 井字棋盘 88$ k$ Y7 U1 u7 J
5.3.2 嵌套的字典和列表 918 d) g# D' \& W0 J" W: N# y
5.4 小结 92
! H( k# o9 W0 g, n( C/ g; D5.5 习题 938 r% M4 l$ s2 g& C. }
5.6 实践项目 93
$ h/ Y5 E8 H! a5.6.1 好玩游戏的物品清单 93, j8 E' T$ |( F' o2 S& w
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94
. J0 s5 L7 `6 ]' v4 ^第6章 字符串操作 95; V% ]9 ~7 P, i. U- n
6.1 处理字符串 95; p: s1 q# _5 ^5 g7 T( \: [
6.1.1 字符串字面量 95. F# e0 m3 L1 o$ I5 b$ P
6.1.2 双引号 96! k7 V/ C& P8 W) r& |
6.1.3 转义字符 96: n3 C; `# x8 L3 d7 A% C( `* o$ N
6.1.4 原始字符串 96
( e/ c2 A9 k1 @. ?" h: t6.1.5 用三重引号的多行字符串 97
+ ^; A5 Z d1 g6 ]% ^( B0 v- e0 O6.1.6 多行注释 97
5 ?; m1 l1 c+ z9 ? ~7 J. v) b" \6.1.7 字符串下标和切片 98
' r1 v2 b7 E) a0 K4 m- V* u6.1.8 字符串的in和notin操作符 98
, q3 ?4 G1 Q6 C6.2 有用的字符串方法 99
# k# N# o% N$ t2 i4 t5 P1 x6.2.1 字符串方法upper()、lower()、isupper()和islower()99! U* o" m* Q8 G4 ^. }
6.2.2 isX字符串方法 1006 F( {' _% C, n2 q' a, G% T6 n
6.2.3 字符串方法startswith()和endswith()1021 [: K; E+ v1 j
6.2.4 字符串方法join()和split()102
7 D; c' D+ p+ W: O9 w, ^1 v* f6.2.5 用rjust()、ljust()和center()方法对齐文本 103
" x! J( v [( r$ l) ]7 m6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
- B! P7 V) `9 M* w6.2.7 用pyperclip模块拷贝粘贴字符串 105
9 S! Y1 {1 ^3 }( @- g; t# d8 `6.3 项目:口令保管箱 106
) ^( K5 ~: ^7 Z4 l$ u2 \* I: |第1步:程序设计和数据结构 106
2 t1 x( j- d, u+ K$ ~* ~第2步:处理命令行参数 106. v, ^. R3 [3 R4 W9 h( k* o! D- y
第3步:复制正确的口令 107
2 S6 e0 ~9 C# b, S' Y1 `& }; q6.4 项目:在Wiki标记中添加无序列表 108
4 l z$ t1 M+ h/ x第1步:从剪贴板中复制和粘贴 108
5 Q' {5 z! _9 H4 u% ^: e第2步:分离文本中的行,并添加星号 1094 `) ~& V: I, E- Q
第3步:连接修改过的行 109
7 Y% L0 w0 g9 e, d7 l6.5 小结 110! {9 D+ C, G5 y
6.6 习题 110" \, {, r, Q) {
6.7 实践项目 111& p* C) o) X. K; I! r
表格打印 111
, M* I! t5 v0 o( p* E1 W第二部分 自动化任务
: u: ], z, ]4 T' F3 P0 @ A+ W: G第7章 模式匹配与正则表达式 115
4 Y7 I& S0 I& P7.1 不用正则表达式来查找文本模式 116
9 M3 v5 c# k' ]: j k: C: R3 N$ {7.2 用正则表达式查找文本模式 117
, g) D& i& x X9 c2 H4 T0 M7.2.1 创建正则表达式对象 118
; n/ f9 V2 T( N" ~# E7.2.2 匹配Regex对象 118- J* q* k' z- }: V& H* o9 c
7.2.3 正则表达式匹配复习 119; f7 ~8 O: A. ^& ]) ]: Q
7.3 用正则表达式匹配更多模式 119
& ]/ X: [( @$ r& T2 N4 k7.3.1 利用括号分组 119( S, Z: g ~- k3 A
7.3.2 用管道匹配多个分组 120+ r% f1 a6 z0 V
7.3.3 用问号实现可选匹配 121
) T; h: Z* T! h3 b2 v6 s J* a7.3.4 用星号匹配零次或多次 1211 h8 u* y0 K6 G
7.3.5 用加号匹配一次或多次 122
5 H9 n# k" V2 h! i+ D7.3.6 用花括号匹配特定次数 122- j. _) Q+ ?; k( Z
7.4 贪心和非贪心匹配 123
1 g. o0 }7 I: z0 r7.5 findall()方法 124
( Y! E' m4 T* P/ p6 C! N q7.6 字符分类 124$ A: l8 d* `; Y( P0 B+ M5 y, ~
7.7 建立自己的字符分类 125! O3 f' I, V! H' r
7.8 插入字符和美元字符 126
0 O2 Z- x1 F |% x% I2 z9 `7.9 通配字符 1260 \- L& R' A2 N$ B: B1 q: G1 e
7.9.1 用点—星匹配所有字符 127
1 l4 O: O3 Y, I7 f7.9.2 用句点字符匹配换行 127
- n+ ~( s" ?# |. }! R4 j& ~ S( q: c7.10 正则表达式符号复习 128
* S. n5 l) E' z4 [4 y# X! \- [7.11 不区分大小写的匹配 128
0 [. a8 w" W$ d& W7.12 用sub()方法替换字符串 129
: n9 i. G$ [* T- M+ h( E7.13 管理复杂的正则表达式 129" d; ~9 `8 ?8 l$ l# N: [+ V
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 1309 w) l5 N* J# z9 f0 \1 w! X- p
7.15 项目:电话号码和Email地址提取程序 130
6 b0 s) t. j- f" s第1步:为电话号码创建一个正则表达式 131
& K2 x, |# ]' a* ~' Z第2步:为email地址创建一个正则表达式 132
( S9 f1 N- W- h/ \第3步:在剪贴板文本中找到所有匹配 132
# |4 t; \" [0 r' @8 I& H第4步:所有匹配连接成一个字符串,复制到剪贴板 133; o2 r! |, X; K1 Y0 v, T
第5步:运行程序 133$ u6 Q: ]. e8 X% G
第6步:类似程序的构想 134
4 S9 U+ n2 p# l. U. t7.16 小结 134) B5 g2 O+ y8 |- A# Y
7.17 习题 134: v3 c7 z- W9 l
7.18 实践项目 136
, D( e- s; x! M- D. g' c! t7.18.1 强口令检测 136" P% F- o" L% R, S5 X
7.18.2 strip()的正则表达式版本 136" e6 I+ |- u, @4 d& H7 w4 ~0 {
第8章 读写文件 137
/ \( n! H- O% n7 {; G8.1 文件与文件路径 1376 f* D, }& r% b9 G, B
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138& B6 }: U6 R5 r+ Y: |4 R
8.1.2 当前工作目录 139
" x2 C6 D+ r0 a' m( n" _9 u8.1.3 绝对路径与相对路径 139
: X6 R. P% H! Z+ s. n6 j8.1.4 用os.makedirs()创建新文件夹 140
0 U- ?9 P4 v5 S) i/ g9 z0 D/ @8.1.5 os.path模块 140
1 i: O8 B2 }- w" {) [' k8.1.6 处理绝对路径和相对路径 141
( e# {: W6 d0 ^) V4 o& D b( T8.1.7 查看文件大小和文件夹内容 142
: ]& d, [" V' e+ ^7 s8.1.8 检查路径有效性 143
3 ~2 T, P) u8 x5 A) [8.2 文件读写过程 144; H4 A! m, c. I7 A p
8.2.1 用open()函数打开文件 145
8 l' H, _1 D6 w8.2.2 读取文件内容 145
; O! F: b4 s ~+ @& L8.2.3 写入文件 146' F' Z8 }6 N- D; e# `6 t
8.3 用shelve模块保存变量 147
& b. }/ x) \! e7 E+ { N$ G8.4 用pprint.pformat()函数保存变量 148
4 W8 c4 ]1 y7 x8 X4 T: b+ z1 T8.5 项目:生成随机的测验试卷文件 149) c+ ^* p J4 w+ a* }
第1步:将测验数据保存在一个字典中 149
. n( w# Y6 A' H* K/ f% \0 [+ R第2步:创建测验文件,并打乱问题的次序 150' I E) m* I7 H) r% X
第3步:创建答案选项 151
) P h/ J0 `8 d9 z" a" T第4步:将内容写入测验试卷和答案文件 151
9 C3 ?) j) [) _- I; d( p% B7 l+ t5 p/ P; I4 Y0 I! v
|