|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
. _" ]3 A# T; m$ y! K# ^/ y
6 k5 f4 D# o. h$ X' B5 [$ }3 a$ I内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
7 W7 ?- J& p* p) ?9 r+ r# A! q6 N0 y( F8 `
0 G; Q, V4 a& Q# d& z. r( ` F作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
( l9 r# E2 A% ^* U i. j, F" r第1章 Python基础 3: g1 M$ `' W& m' p4 e7 W- {
1.1 在交互式环境中输入表达式 35 N I/ [, e7 `1 G0 u' g
1.2 整型、浮点型和字符串数据类型 6
# C# h( V X5 x9 }4 a) o1.3 字符串连接和复制 6( ]" B# d4 W+ o5 _1 a+ y
1.4 在变量中保存值 7
5 [3 e: F# v( V* b3 e: }) z1.4.1 赋值语句 7' F& O, W7 B8 d% B
1.4.2 变量名 9
( j6 \. M3 b4 t# ]3 }9 x1.5 第一个程序 97 U9 ^. x8 r! V7 d6 I6 |4 t; o
1.6 程序剖析 11, f: M5 a9 _9 b( H% x
1.6.1 注释 11" @: i8 ^6 q0 U( t/ i7 P5 P9 G! _
1.6.2 print()函数 112 ?4 M. g8 L3 d
1.6.3 input()函数 11
. N" s9 p* ?8 Z3 ^' z6 L& _1.6.4 打印用户的名字 12/ i# @& @9 G. u3 F; O* ]- O, E
1.6.5 len()函数 122 G% @7 g6 g5 a9 x8 u1 W! w
1.6.6 str()、int()和float()函数 13- i C: a$ F/ k& o/ ], b* |3 d" X6 i
1.7 小结 15
5 l/ I) P( L! [9 t, g1.8 习题 15
; d0 q% D9 R2 N& ^8 ^+ X8 |! m第2章 控制流 17
# r' L7 c1 }( c8 S1 h2.1 布尔值 18: l3 r' M4 ?6 K. }. Q
2.2 比较操作符 19
+ K$ C; e- u" W v0 d% z* b2.3 布尔操作符 202 @9 F7 p7 f z( z) `
2.3.1 二元布尔操作符 202 t. \$ S# q) \# N% n% z7 @
2.3.2 not操作符 21
F" z% s8 Y5 T4 l' T' t9 d2.4 混合布尔和比较操作符 21
; ~1 L% f$ d7 k* i" P$ F2 U2.5 控制流的元素 22
1 h- H2 p1 k& H' a% ~2.5.1 条件 22
$ S& i' V3 q8 z m. l, m2.5.2 代码块 22! U9 _9 `* ?8 V; T( Y, d, U
2.6 程序执行 23
; a, g" k/ ~" [1 K$ f8 d2.7 控制流语句 23 y. d4 L, Y7 c
2.7.1 if语句 23
, F+ ^3 u5 I# z2.7.2 else语句 24# m; p/ c6 w3 P y! m# X
2.7.3 elif语句 25* A1 g7 r* h* \. h) f3 y5 R
2.7.4 while循环语句 30
+ Y# S+ @. S8 N+ x; @2.7.5 恼人的循环 31
& M# D! ?5 o" |2.7.6 break语句 335 {# M P- [6 B5 x# o% a: x
2.7.7 continue语句 34
0 v1 W, x( o! Y) }$ Y) @3 ~' y2.7.8 for循环和range()函数 377 H+ Z' m# D. _- W; Z6 C
2.7.9 等价的while循环 39
( g* o) a8 A( V3 K; V) B2 |5 g2.7.10 range()的开始、停止和步长参数 39
- f+ O: ^8 Y, Y% Q8 H2 o& J2.8 导入模块 40from import语句 41( V* G4 h; K! v
2.9 用sys.exit()提前结束程序 41# ?: [2 L+ i2 |
2.10 小结 41* l+ d/ n0 x; b$ \+ Z+ J0 b5 q# x
2.11 习题 418 I2 Q) J P& M1 z4 K8 ~9 `
第3章 函数 43
2 j$ k0 G7 E$ B% Z* z3.1 def语句和参数 44
) e5 |5 z$ m' U- D& L. q3.2 返回值和return语句 45
8 Y- Y$ ~& b: N; _$ p8 @3.3 None值 46
$ A0 b1 v9 m5 [& t, g, C. N- D+ b3.4 关键字参数和print()47
- P0 q6 P0 p' n& g3.5 局部和全局作用域 48( ^% o! z/ S! f3 A$ y5 i6 b" I+ G
3.5.1 局部变量不能在全局作用域内使用 48
( V6 V0 G. r* c: v4 i$ t4 [3.5.2 局部作用域不能使用其他局部作用域内的变量 49
; `7 w3 `& x. V+ a/ L9 w& g. s3.5.3 全局变量可以在局部作用域中读取 49
" z$ A; N/ U* R* g. Z) q3 V2 w: L2 C3.5.4 名称相同的局部变量和全局变量 50* }9 I$ F3 }! X6 I; @! \# o
3.6 global语句 50( M* n9 a, w: D, @& K
3.7 异常处理 52' G$ A7 v2 p/ a/ w5 g
3.8 一个小程序:猜数字 543 E9 a+ }( R+ l
3.9 小结 55
$ b% n3 y; k% u$ l c/ g, S( b1 `% m! H7 G3.10 习题 56; u# u+ K0 J0 g0 f
3.11 实践项目 561 C. t9 @) j! I
3.11.1 Collatz序列 56% e, E7 p6 }9 E* n' N' y
3.11.2 输入验证 57& i. ^+ h' b2 i, u
第4章 列表 593 {2 W) I& M: m" N- {9 B! w7 f$ ~! g. w
4.1 列表数据类型 595 m( F' i! J. I0 L) T
4.1.1 用下标取得列表中的单个值 60
% I+ G5 u( ]! ?8 P3 T, [/ v+ Z5 n# Q4.1.2 负数下标 61% T: j4 [) L( C E$ g0 a
4.1.3 利用切片取得子列表 613 w! C) ~7 C A' B
4.1.4 用len()取得列表的长度 62
: {5 T( ^$ F/ Q! W4.1.5 用下标改变列表中的值 62+ c& L+ t* a+ q& Q. D4 P
4.1.6 列表连接和列表复制 62 V3 q! \" B; N5 Z
4.1.7 用del语句从列表中删除值 63
7 P; F4 k8 m7 e! l4.2 使用列表 634 t7 k* z D: c
4.2.1 列表用于循环 64; G2 T5 s" u o. {6 l$ K& Q
4.2.2 in和notin操作符 657 {3 E8 x$ f8 c: v7 W9 v* i S3 F
4.2.3 多重赋值技巧 66
& E( {4 p6 z) v6 \4.3 增强的赋值操作 66
' D" u" D5 G( o! o+ o4.4 方法 67& y& F6 d# y. A1 A7 O& U
4.4.1 用index()方法在列表中查找值 67, v9 y, l# }; ?! r( o
4.4.2 用append()和insert()方法在列表中添加值 68& [' U2 J9 L0 F$ C$ A
4.4.3 用remove()方法从列表中删除值 69/ r8 A3 b$ i+ E; M6 V
4.4.4 用sort()方法将列表中的值排序 69' ~* f' A2 M0 p
4.5 例子程序:神奇8球和列表 70% b% q& ?9 r9 g: }# o- G
4.6 类似列表的类型:字符串和元组 71
- n; g; @: i7 v x* x4.6.1 可变和不可变数据类型 72% M3 m6 E+ r+ ] p& s t/ H) a
4.6.2 元组数据类型 73
. P" `. E2 i8 O9 v: k; b1 }* k, I( w4.6.3 用list()和tuple()函数来转换类型 74
# I0 r2 ^% V% ]8 V% B4.7 引用 75
- d, @4 a3 o3 n M4.7.1 传递引用 76" I* m+ b9 x" E) l
4.7.2 copy模块的copy()和deepcopy()函数 776 x, e9 q! @1 e, ]1 ~: D% Y! C+ _
4.8 小结 78
. E& _6 L4 {! }+ C6 C4.9 习题 781 k1 v6 r) @5 Y* [
4.10 实践项目 79% q: h5 p0 H$ ^8 p' }/ N9 p
4.10.1 逗号代码 79
$ ^* T: |6 `2 r4.10.2 字符图网格 79# l( V/ B$ Q2 a5 u3 E
第5章 字典和结构化数据 81
; A1 f/ @. l' f. H5.1 字典数据类型 81( {& Z9 d( w+ [& U# m3 ~' m! {
5.1.1 字典与列表 82; }/ |& W5 k$ Y: A
5.1.2 keys()、values()和items()方法 83
% w; B7 t1 C, z. F5.1.3 检查字典中是否存在键或值 84
. B+ b. q+ L6 y& ?7 x# R5.1.4 get()方法 84
; V/ \& h; f, S F1 G5.1.5 setdefault()方法 85, }9 E3 I( J) G* O) d
5.2 漂亮打印 86
* \, @+ @1 K' u C5.3 使用数据结构对真实世界建模 87) E1 k& L3 t: z6 e; m+ h
5.3.1 井字棋盘 88( C8 t7 Y& S/ X8 _- _& ]; L
5.3.2 嵌套的字典和列表 91
; w: J" c6 n( S8 B6 g3 `7 o* G4 R5.4 小结 92
& S& h& ~9 ~2 ~+ h2 D5.5 习题 93. V+ ]# k5 s Q' ?3 F* p- c
5.6 实践项目 93- s. u7 N I( `4 w% Q) L( y
5.6.1 好玩游戏的物品清单 93( G6 { d8 c- Y
5.6.2 列表到字典的函数,针对好玩游戏物品清单 941 i, P% D/ n9 E k8 X% E+ r5 o. ]5 z# l
第6章 字符串操作 95
8 N: y- i r5 P, _6.1 处理字符串 95
' f! c& i$ N# N7 J: F2 N4 Y% a6.1.1 字符串字面量 959 B* S; J5 V+ l' v% Q. L
6.1.2 双引号 96
2 J5 g8 j F# _. F! E* w6.1.3 转义字符 96
* q% p g% }4 u# V$ L+ D/ U6.1.4 原始字符串 96. p/ i x# Y. J2 D
6.1.5 用三重引号的多行字符串 97
0 U9 b s* z$ k/ _ V3 C6.1.6 多行注释 97
( I, p% z T7 b; N6.1.7 字符串下标和切片 98) D: ]) t9 H) s$ l
6.1.8 字符串的in和notin操作符 984 k/ |) m9 W5 I% X1 ~( B) s. }* i
6.2 有用的字符串方法 99
! k# @& x3 S6 ?) ]( |& z* e6.2.1 字符串方法upper()、lower()、isupper()和islower()99
* ~/ L" E U( t G; G( B6.2.2 isX字符串方法 100$ [2 ? ]3 [5 M% h1 k
6.2.3 字符串方法startswith()和endswith()102" u9 }( n9 u2 B5 B5 p8 t5 h- C
6.2.4 字符串方法join()和split()1027 |# d# b; `7 l u+ i
6.2.5 用rjust()、ljust()和center()方法对齐文本 103
% D( J2 t3 I3 ? Y) q8 }6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
- p4 ^7 v2 W- Y3 }6.2.7 用pyperclip模块拷贝粘贴字符串 105( I4 E$ r, q' G# S, E* G
6.3 项目:口令保管箱 106
/ v/ A# p# e* g- D# x+ ^) p# d第1步:程序设计和数据结构 106
7 F/ x+ |5 x+ l0 @* n第2步:处理命令行参数 106' F6 ^* q E- Z u
第3步:复制正确的口令 1072 ?7 @: |/ T5 v
6.4 项目:在Wiki标记中添加无序列表 108+ f6 [2 c# u9 ]* T- } m( V; C
第1步:从剪贴板中复制和粘贴 108
: q) m h) X$ v8 u( m7 @第2步:分离文本中的行,并添加星号 109: U1 r2 f0 ~8 v, m4 Y2 d+ W* Z
第3步:连接修改过的行 1093 y1 ]! n( U: ?' {5 c& j
6.5 小结 1109 P. X+ _2 b' L
6.6 习题 110
% ~2 y- i+ _' n' C o1 A6.7 实践项目 111 R4 I2 H: X$ \. a" a8 l
表格打印 111
2 S+ |0 B0 K/ N第二部分 自动化任务, G7 I* n, y2 f( d7 G* a7 T. ~
第7章 模式匹配与正则表达式 1159 X9 _$ v+ C3 c" i% s( L+ q0 z
7.1 不用正则表达式来查找文本模式 116
) N3 e/ c7 R& D K; O7.2 用正则表达式查找文本模式 117
% q4 C9 m2 [. k3 `7.2.1 创建正则表达式对象 1188 k" d% x* Y: N! w2 m1 _
7.2.2 匹配Regex对象 118! m7 r+ ^0 `" f- ~! v5 ]
7.2.3 正则表达式匹配复习 119
7 @$ f: v' o- c. S# d7.3 用正则表达式匹配更多模式 119
; P( I8 m4 K$ t7.3.1 利用括号分组 1193 \+ m7 j. z F o# y' C
7.3.2 用管道匹配多个分组 120 r. A+ p" Z6 m! U) f% C# \5 G
7.3.3 用问号实现可选匹配 121
3 a* w N" V1 O# G0 w9 N7.3.4 用星号匹配零次或多次 121
, M6 y& h/ U# Z m7.3.5 用加号匹配一次或多次 1227 H! D$ [7 ?; m/ m
7.3.6 用花括号匹配特定次数 122! W& _. {: n. } U: L: T( }
7.4 贪心和非贪心匹配 123
+ C0 d! J. u& R5 d7 C' Y7.5 findall()方法 124
( z4 e# M9 d; @! E) M X. v7.6 字符分类 124
1 I9 f- `+ v) z" Y. _2 D# D& `* z7.7 建立自己的字符分类 125! L$ B: J" U# T8 ]0 o0 M+ X
7.8 插入字符和美元字符 126: v, _3 p5 ?* e
7.9 通配字符 126
: l: B, I/ S8 F. K. a7.9.1 用点—星匹配所有字符 127
( j; m; c2 H) ^4 ~1 `7.9.2 用句点字符匹配换行 127- U/ x$ y6 B" B; f$ Y9 U5 s8 W
7.10 正则表达式符号复习 128" P6 J1 d% {. _. P2 Z
7.11 不区分大小写的匹配 128
0 e$ i( y$ }+ l) j# k$ U7.12 用sub()方法替换字符串 129
0 I3 T5 d7 m: O; E! K, k7.13 管理复杂的正则表达式 129
, \+ n- A- s8 {, T7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
* S! b& {, i" G; Z1 W- `1 N7.15 项目:电话号码和Email地址提取程序 1308 i7 ~0 [5 E7 z7 N ^/ Z
第1步:为电话号码创建一个正则表达式 131
- ~$ B' H" i; ^0 q第2步:为email地址创建一个正则表达式 1320 z5 |1 l$ J$ [* I6 L# A- U- E" B
第3步:在剪贴板文本中找到所有匹配 132
# z B+ O/ B; L* z( O& S第4步:所有匹配连接成一个字符串,复制到剪贴板 133
0 b3 |* {6 C- j, N: {# w; w, x( Q第5步:运行程序 133+ L" | E$ ~* i- L. @9 s# g
第6步:类似程序的构想 134& T2 j n/ k/ ?5 C$ B& \1 {
7.16 小结 134
: ~3 o+ ~. o7 @, M+ {7.17 习题 134
) K$ ~0 x& p3 J5 h5 ?. M5 t7.18 实践项目 1368 V' { { w0 ] E6 g4 j
7.18.1 强口令检测 136
3 y# Q% T% R; c0 N* v" H3 T7.18.2 strip()的正则表达式版本 136
% U- a' E( n1 {第8章 读写文件 1372 y# a( x5 V8 c" L e+ h
8.1 文件与文件路径 137
6 R: T- v' r! E8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
( y0 {; P6 ?" a# t1 N9 R& w8.1.2 当前工作目录 139
& Q" _- X# m' M8 L, O9 ?8.1.3 绝对路径与相对路径 1391 B9 E3 y& v1 {2 `( U, T
8.1.4 用os.makedirs()创建新文件夹 1401 i* g; O# L: J! G0 c( t
8.1.5 os.path模块 140* G- `8 E( c" _# y8 @ h( b
8.1.6 处理绝对路径和相对路径 141
: k {* o: {) I3 T8.1.7 查看文件大小和文件夹内容 142/ o) g1 v% x% F; `% ]' j) X0 I, n
8.1.8 检查路径有效性 143# ?7 Q3 w1 e9 b; Q7 o& Y
8.2 文件读写过程 144
* j/ I* q; f! X Z$ c" T) V8.2.1 用open()函数打开文件 1458 b* A0 I4 Z8 c: V! ?
8.2.2 读取文件内容 145
% j8 b3 y; m' b# J) M8 M8.2.3 写入文件 146+ `( h, U P! p) d5 [( j) Y
8.3 用shelve模块保存变量 147# p* w+ ~) C1 T% v! P. t0 ?5 D
8.4 用pprint.pformat()函数保存变量 1488 p( Q3 Y* d& e7 b j% B
8.5 项目:生成随机的测验试卷文件 149, g' e' F( c; X$ r% L6 H
第1步:将测验数据保存在一个字典中 149
5 \2 ]4 t0 D1 C- B5 y& w第2步:创建测验文件,并打乱问题的次序 150
* {& Y" @' D6 J$ k4 e% ~第3步:创建答案选项 151& k& D6 U7 X) }9 c" D O
第4步:将内容写入测验试卷和答案文件 151
+ n" a3 z! p4 R& r' c4 J, `) Y" E/ a7 a9 D; _) z( X2 W
|