|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma ) |$ i( G+ R& w" P1 L. G
# Y* ?( @; a& I( g内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
, W1 h7 v( I/ x* ^5 n1 i4 M/ m# i
6 k4 D) b* @/ ^5 L
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
8 p1 a- Z" d8 g8 z k, y- m# }' q4 l第1章 Python基础 3
. T4 K% f: B4 `5 y# }/ Y1.1 在交互式环境中输入表达式 3
( d- v- @/ f7 L* o0 X1.2 整型、浮点型和字符串数据类型 6 D7 ~6 |' v/ W! K' }
1.3 字符串连接和复制 6 \4 @; x7 P* B; |7 c4 E
1.4 在变量中保存值 7
$ u- n6 S d) H: M% q1.4.1 赋值语句 70 {% \- d; p* v
1.4.2 变量名 9& Q+ j* p4 S* o
1.5 第一个程序 9- Q6 {! F( x$ {
1.6 程序剖析 11
- E+ R$ y# n& }' O$ _" u1.6.1 注释 115 F$ K" X4 K9 k. p7 ^# B' \
1.6.2 print()函数 11, b6 O( ]) p8 Q! ]% y1 w
1.6.3 input()函数 11
0 ?/ r& C& m1 h1.6.4 打印用户的名字 12
! Z7 o( D; b7 m. P r' u1.6.5 len()函数 12
1 H0 p O) ~* V/ m) z0 x6 O M1.6.6 str()、int()和float()函数 13
- B ~' {2 Q$ M% R9 L0 i1.7 小结 15
2 h0 s& I8 Q. D+ a: A2 y: c1.8 习题 15
2 r" ^' f1 V0 N( b第2章 控制流 173 O$ e+ ~4 Q$ Q* B4 P7 x& I+ n9 I
2.1 布尔值 18
! B; \( V$ |5 i) z" ^2 Q4 W2.2 比较操作符 19
; H' K4 C4 Q- r& f2.3 布尔操作符 20
/ G: Y" A8 G! p0 D6 e2.3.1 二元布尔操作符 20
2 c$ F) m, h: ~! R9 x$ c! q2.3.2 not操作符 21
& C7 V6 p& S. R; U+ D2.4 混合布尔和比较操作符 219 x) O" g: L* D/ Z X8 h3 B
2.5 控制流的元素 22 @9 y7 H. A* C, Y
2.5.1 条件 22
. ~$ i7 R- C; i$ H1 I2.5.2 代码块 22
$ q8 G( b- f3 X5 R( W, n2.6 程序执行 23
. D* b9 W4 N- B/ R5 Y9 Q9 E. Q2.7 控制流语句 23
( |# x; B4 k' X9 i ^8 i2.7.1 if语句 23
8 a$ f3 Q# q5 @3 ]2.7.2 else语句 24
9 p1 A, P& M( ~6 o; f5 P2.7.3 elif语句 254 c5 M, z+ M/ A$ p
2.7.4 while循环语句 30
! f& [$ |; m3 a& }6 X6 E8 _2.7.5 恼人的循环 31
! s! k, g, s. A! b/ o% q2.7.6 break语句 33
% y0 L: Y5 C: L2.7.7 continue语句 34
6 `: [( Z# s ?3 p) p2.7.8 for循环和range()函数 37; I( y0 D$ s- n' w
2.7.9 等价的while循环 39
% k" d* P7 [" Y! i0 @( Y2.7.10 range()的开始、停止和步长参数 39
$ K4 [: j6 q6 R/ K% t2.8 导入模块 40from import语句 41, e7 Y* W7 Y' e, l5 Q& W
2.9 用sys.exit()提前结束程序 41
' s( h$ J3 z# z7 y2.10 小结 41; Q$ N; l" {' w8 H8 ^
2.11 习题 41
8 P' S9 M( Z* Z: ~第3章 函数 436 ^6 ]+ _& n- ?
3.1 def语句和参数 44& b m4 H E6 ]7 M$ _! j; a0 L
3.2 返回值和return语句 45
" I% T3 o& F" p7 l3.3 None值 46
) O4 z! I* X7 n5 M$ P3.4 关键字参数和print()47: e/ O9 f) l& F0 P- l O/ \
3.5 局部和全局作用域 48+ m/ D" T/ c, I5 |
3.5.1 局部变量不能在全局作用域内使用 48& h0 ]/ {; ^9 p8 g
3.5.2 局部作用域不能使用其他局部作用域内的变量 497 o7 m, a0 l# \! D. A6 C) H# E/ z- O
3.5.3 全局变量可以在局部作用域中读取 490 { l5 |1 v8 k' Y) b6 h3 H2 F0 f
3.5.4 名称相同的局部变量和全局变量 50
+ m) x# Q+ ^, z8 I t, j V3.6 global语句 50
6 z* C1 P$ q4 K8 X' ^* j3.7 异常处理 52
9 B% _" d% m0 T, l( @' o& o) d7 v3.8 一个小程序:猜数字 54
" D: `* V0 ~7 @3.9 小结 55
0 G2 y; ?. ^* b" |! a3.10 习题 56% n+ E% o/ E. W- M
3.11 实践项目 56
" j0 @3 j1 x0 N+ I! J5 W3.11.1 Collatz序列 56; L M/ E) w x$ O
3.11.2 输入验证 57
8 Y; m( r' S* E2 g; a( u+ Y% R第4章 列表 59$ }: C4 N+ F% o) \+ B5 Y
4.1 列表数据类型 59# w" x" t# B1 w& S% P6 o) t" r
4.1.1 用下标取得列表中的单个值 605 }8 N( D! A8 v% Z ^# g: p% H
4.1.2 负数下标 61
/ t) E$ l2 T0 Y$ I6 g" ^/ [, n$ C% n8 A4.1.3 利用切片取得子列表 61
9 d9 D/ H6 V+ i5 |5 n4.1.4 用len()取得列表的长度 62
/ C7 t$ w/ w( W; ?6 _; F3 R4.1.5 用下标改变列表中的值 62
: d S7 T: H! m8 m4.1.6 列表连接和列表复制 62
$ L# {# d' r0 N+ ]7 L l/ |9 f4.1.7 用del语句从列表中删除值 63) L0 p: N b: y% r
4.2 使用列表 633 H+ j. V7 k! h
4.2.1 列表用于循环 64
/ I, W/ ^& \4 K z; M4.2.2 in和notin操作符 65
" T, P' s& Y. N6 f2 O4.2.3 多重赋值技巧 66
4 V5 q3 F* P* s% ~% [/ Q4.3 增强的赋值操作 668 \) _7 b3 f, x# l! I/ q% Q
4.4 方法 67' z7 U: M: i' k+ a
4.4.1 用index()方法在列表中查找值 67
( U8 ~; X- N1 i& C- x8 ]& l- W% T: v6 a8 h& n4.4.2 用append()和insert()方法在列表中添加值 68
: e* _1 T7 Y, s2 v4 G) f4.4.3 用remove()方法从列表中删除值 69
' n$ q. Y4 c/ O& u4.4.4 用sort()方法将列表中的值排序 69* _# q) M- h0 E0 A
4.5 例子程序:神奇8球和列表 70- G- n% f3 F& ?. o4 [
4.6 类似列表的类型:字符串和元组 71
5 Q# D: x$ ~" [/ D- ]2 V+ A4.6.1 可变和不可变数据类型 722 S9 G7 D( c1 P4 j; `
4.6.2 元组数据类型 73
% N! q ~6 B5 J- O8 k( k; `4.6.3 用list()和tuple()函数来转换类型 74
; e! @, h, v( C9 e4.7 引用 75
# P2 L% @/ z1 p% ?& h; z' ~4.7.1 传递引用 764 i/ V& e- [( P f) G, n3 E
4.7.2 copy模块的copy()和deepcopy()函数 77
* N. }! p# k2 f6 L4.8 小结 782 k8 p* T; ^3 y" @# t
4.9 习题 787 [. \ Y- i7 A U- s
4.10 实践项目 79, L- _: v; a- Q3 Y* V
4.10.1 逗号代码 79
" s4 G5 c" M* `. ?. H3 B0 |4.10.2 字符图网格 79/ l2 E' @0 A$ g3 A& u% l
第5章 字典和结构化数据 81+ D; h: T$ W% _; Y- d5 Y) `4 l
5.1 字典数据类型 81
, j2 s* o# Q- K5 P9 F2 U3 \5.1.1 字典与列表 82
! n3 q# D9 w4 p& C5.1.2 keys()、values()和items()方法 83
2 d& K: z& ]0 R) r5 `* c# m* Y5.1.3 检查字典中是否存在键或值 844 ?! i* z6 {! y& \ B( l
5.1.4 get()方法 84
" ?2 C1 Q& j% z7 N/ P" r5.1.5 setdefault()方法 85
" A, X5 K& Z! H% l5.2 漂亮打印 86( b9 _( s- O) h9 P0 `3 x; _
5.3 使用数据结构对真实世界建模 87
1 o9 B' k1 M d" c4 y5.3.1 井字棋盘 88
; v. {4 K8 e- `% d, Q' c3 B5.3.2 嵌套的字典和列表 91! a1 _ \. O+ Q9 c0 w8 s
5.4 小结 92' q0 D+ f) G, I
5.5 习题 93
' Z i/ d5 {1 e [5.6 实践项目 933 M3 ]( o$ J+ k5 B
5.6.1 好玩游戏的物品清单 93! w7 Y) ?. Z6 z" W& k; [
5.6.2 列表到字典的函数,针对好玩游戏物品清单 942 d$ h" U U% b" j/ U/ h
第6章 字符串操作 95
9 f% W* ] h* N8 w; ~. {6.1 处理字符串 95
9 L j( P3 X2 D- D8 b1 a1 y/ }6.1.1 字符串字面量 95% |( Q v6 b5 u. H
6.1.2 双引号 96 [0 e$ \! t0 O) g# p; I: U0 |7 m
6.1.3 转义字符 96
. L J( y T/ k! i: M' e3 b6.1.4 原始字符串 96
% H7 B- _7 R3 k) G: ?2 O/ Q$ |6.1.5 用三重引号的多行字符串 97% w4 m: H( ?5 i, }
6.1.6 多行注释 97
. J* I0 ?7 h0 T5 x, S6.1.7 字符串下标和切片 98
; t& K2 L$ ?8 p& l" b [& ` [6.1.8 字符串的in和notin操作符 98
6 i4 U5 o" z/ r- l# N; [6.2 有用的字符串方法 996 E' l, {7 Z+ _. v( U
6.2.1 字符串方法upper()、lower()、isupper()和islower()99
3 P0 r6 n/ R( |* O; x$ {6.2.2 isX字符串方法 1006 }/ P/ r# r- L0 K4 o% W1 ]
6.2.3 字符串方法startswith()和endswith()1027 q7 a9 s8 R. o
6.2.4 字符串方法join()和split()102
/ E% [* x; q3 s3 U: {) V5 M6.2.5 用rjust()、ljust()和center()方法对齐文本 1039 F4 g0 i0 a; z2 V9 j; q' w
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104. @) f' ^3 Z" p5 Y0 Y9 ^% ]7 q
6.2.7 用pyperclip模块拷贝粘贴字符串 105
# Z2 Q5 r; I, P0 r2 [$ E6.3 项目:口令保管箱 106
9 i; r- k7 z! Y2 b- N第1步:程序设计和数据结构 106
5 y) q; E0 u ?$ `第2步:处理命令行参数 106
* S; x {# m4 h8 ]1 b+ r& ]1 h第3步:复制正确的口令 107
! ?. i4 C% W- A6.4 项目:在Wiki标记中添加无序列表 108% A. K" @5 z+ L
第1步:从剪贴板中复制和粘贴 108+ m9 p) } A- b, b! T1 _
第2步:分离文本中的行,并添加星号 109
5 R" q! q7 U5 T' \第3步:连接修改过的行 109
; H: F& X) s7 u2 L, `6.5 小结 1101 g! r4 ?) I H% Z* F K9 ?
6.6 习题 1103 D" x1 Y7 p$ V/ Q( S
6.7 实践项目 111
% l. V6 J* i4 H% c0 p, F表格打印 1110 s9 X! t1 i Z4 U5 R5 E H4 {
第二部分 自动化任务
% {8 s9 C* s# i4 J0 F第7章 模式匹配与正则表达式 115
$ {: D" Q; `; E# u# s" I6 A: a. j5 m" r7.1 不用正则表达式来查找文本模式 116
( ^/ O/ O( W& E( E6 @6 V7.2 用正则表达式查找文本模式 117
& s( | e; D! t# B3 g7.2.1 创建正则表达式对象 1182 d4 K& P6 N. M% {- S2 i+ I' Y1 x
7.2.2 匹配Regex对象 118
7 ~" S* n+ T$ T# \# f) G. a' b7 ?7.2.3 正则表达式匹配复习 119
5 G8 a; n$ w3 t7.3 用正则表达式匹配更多模式 119
[* y2 C" k7 o6 T: D/ s( F7.3.1 利用括号分组 1195 c6 A' m1 M: U+ r
7.3.2 用管道匹配多个分组 120
8 o' ~- L- H( x+ g5 ~7.3.3 用问号实现可选匹配 121
6 ~2 R7 K1 S6 _- N7.3.4 用星号匹配零次或多次 121
+ f9 B3 D; h% R9 v8 N" Y7.3.5 用加号匹配一次或多次 1226 g4 u0 c" ~3 v O. e3 Z
7.3.6 用花括号匹配特定次数 122
, Y% W4 U2 W4 L6 r4 B( P7.4 贪心和非贪心匹配 123
. H R* b% k* z7.5 findall()方法 124
5 c$ n- i, M( s2 Q/ m. C Y7.6 字符分类 1240 u3 @; R2 w6 B8 H( H+ p
7.7 建立自己的字符分类 125
' r, _/ B" j; P- V; K7.8 插入字符和美元字符 126, s! c" v; e+ g# b
7.9 通配字符 126
+ N7 c6 L, |# O/ Q/ z" X; I, A; e5 }7.9.1 用点—星匹配所有字符 127
& w/ ^$ n' S; u$ v7.9.2 用句点字符匹配换行 127
, Y) z& M; {; K4 Z' j6 D7.10 正则表达式符号复习 128
$ I, w8 {. q9 _$ f' ] s& z$ J7.11 不区分大小写的匹配 128& z/ ^# T5 o# c
7.12 用sub()方法替换字符串 129' C! `! }& B, B2 h2 O" k L' \- Q p9 e
7.13 管理复杂的正则表达式 129! f8 L6 Q% O/ G* @% z+ |: \
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130; t4 a! q7 V% P$ J" T0 e/ }6 ?( g
7.15 项目:电话号码和Email地址提取程序 130
- Y7 l: _* m2 ~( |第1步:为电话号码创建一个正则表达式 131! a+ d' X6 v- D2 d6 n( b
第2步:为email地址创建一个正则表达式 132
' |. n$ }/ ?! F# k7 N$ I6 }3 c6 @; k第3步:在剪贴板文本中找到所有匹配 132
- ~# |5 m9 z: w% f# E! a H$ e第4步:所有匹配连接成一个字符串,复制到剪贴板 133
; x' A/ z+ x0 p3 Z* U+ G第5步:运行程序 1332 Z0 y# y- s& p# d! y+ U$ n3 t: U
第6步:类似程序的构想 134! X5 I9 i- d4 a. w1 b
7.16 小结 134# n1 O% A# ~( K6 F$ `
7.17 习题 134
} U# c9 I. d7 X" x" b" l- B7.18 实践项目 136
$ a7 S1 O/ Q# n; B7.18.1 强口令检测 136
. I: [# z4 U% _7.18.2 strip()的正则表达式版本 136
" {! f; C* s" I; w3 k第8章 读写文件 137
! e% C, j: t6 A6 @6 C8.1 文件与文件路径 137 i5 t6 |3 T+ c$ `3 Z
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138- V, q: @4 e/ c L% m1 b2 L
8.1.2 当前工作目录 139
$ h& H' ]3 N6 j0 d$ u8.1.3 绝对路径与相对路径 139
9 F& @8 j/ g6 b8.1.4 用os.makedirs()创建新文件夹 140. t1 i& d# H# e. D, l' C5 j
8.1.5 os.path模块 140
2 ^" j. u1 R& A% O. i2 ?6 Z8.1.6 处理绝对路径和相对路径 141) i* T, s$ y$ u! Y% q0 B) w$ w
8.1.7 查看文件大小和文件夹内容 142
- H$ Z( W) Y$ W0 P0 |/ V8.1.8 检查路径有效性 143% s. j' L: F$ s1 B+ V5 u% e' v$ u
8.2 文件读写过程 144
& _5 X5 \& n+ b2 t9 S8.2.1 用open()函数打开文件 145" P; w o* K6 p# V0 B
8.2.2 读取文件内容 145
9 C/ l5 K! L0 e! D+ y1 @8.2.3 写入文件 146% L3 ^" U8 i+ D$ h/ V
8.3 用shelve模块保存变量 1470 L. M! z- y( r0 l9 c: h
8.4 用pprint.pformat()函数保存变量 148
& B! b3 C8 u* q/ k8.5 项目:生成随机的测验试卷文件 1495 c2 b$ k1 z4 u; S; |, B9 @# q4 ^7 o
第1步:将测验数据保存在一个字典中 149! m' J8 _5 M7 `5 @
第2步:创建测验文件,并打乱问题的次序 150! W# Y8 E7 L, T. H5 a: j
第3步:创建答案选项 151
8 [0 X' o* s& B, t n X第4步:将内容写入测验试卷和答案文件 151+ \9 Q* `) j2 r
4 ^9 O& b+ z% I# W
|