百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
: o/ h. g4 _; z. H! M) A7 H
3 N' ?9 s+ p/ i内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
! e2 [5 E( g8 Y w: g4 I( P# Q1 p
' Z8 P7 h. N* ~" \' r+ L' o/ |2 X7 l
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础( d- }3 W/ H7 V1 V# }3 J+ p
第1章 Python基础 3. s# k5 M! x/ W5 |9 G
1.1 在交互式环境中输入表达式 3" x; {7 i( _4 S+ v/ p
1.2 整型、浮点型和字符串数据类型 6, i9 B1 b, x/ v$ o. N
1.3 字符串连接和复制 68 I" g' H' c# n( Z% b( H
1.4 在变量中保存值 7
* I, \7 K8 g7 {: g/ |/ `4 M1.4.1 赋值语句 7( H' x- i6 m) l6 U7 [! [& T
1.4.2 变量名 9; f+ @+ C% }5 H! k
1.5 第一个程序 9
8 e* f. i5 o, _3 F4 B& K1.6 程序剖析 11
+ t a2 p, N( S7 b& e9 f1.6.1 注释 119 e; Z$ ~3 o- V6 R7 H
1.6.2 print()函数 11
7 \8 N' N; ^# m- d1.6.3 input()函数 11
9 e& I8 a9 B4 F1.6.4 打印用户的名字 12- N7 Q/ X0 f9 W- J9 Y
1.6.5 len()函数 129 u8 z9 ?! k6 U @7 {' s( s
1.6.6 str()、int()和float()函数 13
4 [' N5 g& ^0 j+ f* n' T# |1.7 小结 15) `0 w3 ^% n5 ]7 Y, r% C, f ?
1.8 习题 15
7 y4 ~7 x9 A6 T( X第2章 控制流 17- z9 w) V0 U! N* g( Q
2.1 布尔值 18) I8 o# f; W; o) X; S3 \
2.2 比较操作符 19
' g& H( x3 H/ U9 U0 N. a/ L2.3 布尔操作符 20* o0 W) b1 e8 Y
2.3.1 二元布尔操作符 20
& \( D( A5 d; u: p6 D4 s U1 k2.3.2 not操作符 21
% Y0 K/ F$ e, n' x, ~( `* M7 I2.4 混合布尔和比较操作符 21
+ ]# r$ k- f. x5 q, J3 G* m2.5 控制流的元素 22
9 \( w* o! J% \' G+ W& `3 U, J2.5.1 条件 221 b8 v; d A W- w* a* ? \" B
2.5.2 代码块 22: B% R8 a6 l5 K
2.6 程序执行 23
9 f; B: r! B. q0 t- ^8 L f2.7 控制流语句 23) g* `2 s: ]! e) o
2.7.1 if语句 23
0 |3 C. B0 z9 S; ^1 ?2.7.2 else语句 245 P7 [. F& j! e! c4 G) M
2.7.3 elif语句 25
! ?0 E7 v% q4 X3 h) k" V) X2.7.4 while循环语句 30; S8 I7 J2 [9 `) l+ I4 a
2.7.5 恼人的循环 31& l% Q1 r7 n+ ?8 y- x5 o
2.7.6 break语句 331 n% Z7 K8 T8 i. [: W
2.7.7 continue语句 343 ^5 V" B5 t$ _" C
2.7.8 for循环和range()函数 37
2 {2 m" S% z6 H, O) q# F2.7.9 等价的while循环 39
. m' L6 \' e; I: @8 e& f2.7.10 range()的开始、停止和步长参数 39
! b+ M6 D3 y/ I6 I( }2.8 导入模块 40from import语句 410 Q; q- B L& N( k& @8 q0 n. c
2.9 用sys.exit()提前结束程序 41
# ?' F& c- h; @5 R7 W& E1 y2.10 小结 41/ T. C/ r% Z$ y
2.11 习题 41
2 X l5 I" N, N! j/ `: F第3章 函数 43
" t7 b7 [$ u1 a$ @. y3.1 def语句和参数 44' i8 L' R P7 V! o
3.2 返回值和return语句 45$ {+ v5 C4 Q1 l+ _
3.3 None值 46/ t P; H9 J' v9 \
3.4 关键字参数和print()47
) T" m4 L! ^0 \8 z. W3.5 局部和全局作用域 48
- o6 g5 e1 }, \3.5.1 局部变量不能在全局作用域内使用 48
8 `0 m2 R9 a5 }9 N' I3.5.2 局部作用域不能使用其他局部作用域内的变量 497 t7 _9 c' j" ?( c
3.5.3 全局变量可以在局部作用域中读取 49
* z% ?. \/ C9 Y9 m3.5.4 名称相同的局部变量和全局变量 50
9 K" O- U+ p* `7 _: _' O F9 n3.6 global语句 50
n6 a* g8 V5 B+ s3.7 异常处理 52
. f2 C1 s" l8 i' [3.8 一个小程序:猜数字 54
% O, ?2 D a M; q1 b$ w3.9 小结 55
, N9 j& f- a3 A! ]8 k4 O3.10 习题 56
& M: v; J K, X" |3.11 实践项目 56
( F# o6 K" E e3.11.1 Collatz序列 560 a" b( v" k- d: M) a# L F+ x
3.11.2 输入验证 57' s6 V* J4 y" Y2 M0 T3 L7 f1 p
第4章 列表 59
% w/ U( W! J( U m& \( w& B" W4.1 列表数据类型 59
, }+ ~9 f2 r# k L% r+ i4.1.1 用下标取得列表中的单个值 60
7 r, [8 e2 o; m1 R0 f! Y4.1.2 负数下标 61' t! w/ S0 p9 }
4.1.3 利用切片取得子列表 61/ {9 v) ^/ T. z' F8 U2 Z
4.1.4 用len()取得列表的长度 62
, ?7 |; E3 J" L' g9 J4.1.5 用下标改变列表中的值 62
$ Q$ G9 E7 l2 Y' T( ?( M4.1.6 列表连接和列表复制 62( v3 v) t8 u f/ D$ q
4.1.7 用del语句从列表中删除值 63
; }0 Q7 t1 S/ M; X: o- q8 f2 w; e4.2 使用列表 633 ~4 m% B8 x& E, K/ Y s* a
4.2.1 列表用于循环 64
2 e! U! J/ l& {8 O7 c) D |4.2.2 in和notin操作符 658 Q7 ?* C) ?2 {9 A9 A
4.2.3 多重赋值技巧 668 n* i, I* b- D- i
4.3 增强的赋值操作 66
& n: ?) R7 h$ q4 o4.4 方法 67
5 I1 c1 c7 G# W5 t3 \) {& X( u4.4.1 用index()方法在列表中查找值 67# Y* t# C d/ `% F1 s3 H
4.4.2 用append()和insert()方法在列表中添加值 68
7 _: ~' u7 X* V" g y f W. g4.4.3 用remove()方法从列表中删除值 699 n' ^& X* f" D/ Y6 a5 l
4.4.4 用sort()方法将列表中的值排序 69
. n4 O. v& O4 d6 G w8 O$ j4.5 例子程序:神奇8球和列表 70( `, h* N$ I; J* `* {
4.6 类似列表的类型:字符串和元组 713 h$ g) S5 f5 O5 Z: B
4.6.1 可变和不可变数据类型 72
" C4 ]0 l/ ?& i0 k4.6.2 元组数据类型 73
$ B' w }4 I) ~6 Q6 z$ p' j' D4.6.3 用list()和tuple()函数来转换类型 74" G2 ^& W1 j3 @; P2 @+ a" K
4.7 引用 75
/ [' P, I8 N. [4.7.1 传递引用 76 w; R) q( T7 J
4.7.2 copy模块的copy()和deepcopy()函数 77
6 p9 h: z6 l r' w! [4.8 小结 78
9 m, j( L+ {6 o8 y9 b4 W" J4.9 习题 78/ W+ q% U' B2 {/ i0 y
4.10 实践项目 79
' z0 L! k" n: \4.10.1 逗号代码 79' P9 ~- X8 n X% [# c `6 n2 P
4.10.2 字符图网格 796 a* M& G* H; L i, P \6 t4 ^
第5章 字典和结构化数据 81
( y. T+ d$ v/ c5.1 字典数据类型 81
* f; h8 K, d" O$ V; o: y" x8 z4 m5.1.1 字典与列表 82: F& Z/ N& }5 h. a: v3 w
5.1.2 keys()、values()和items()方法 83: ?( o' G: y2 y5 n$ _! E
5.1.3 检查字典中是否存在键或值 840 g0 R+ `' L: E. E' y( u# C
5.1.4 get()方法 84
% G& X0 I/ @0 k. f0 {! o5.1.5 setdefault()方法 856 w6 l7 c# N; }5 L* o/ o
5.2 漂亮打印 86
5 k6 m& ?: Q+ C/ A5.3 使用数据结构对真实世界建模 87 B2 o* f2 U$ B+ A" t
5.3.1 井字棋盘 88
" s: l4 P) A. p5.3.2 嵌套的字典和列表 917 K( o2 j O/ X0 j$ y
5.4 小结 92
m. N# k }* X5 D$ Q5.5 习题 93
4 b3 P0 A8 b) E0 a5.6 实践项目 930 Q& g% h; H7 W/ H1 J* _) o
5.6.1 好玩游戏的物品清单 93, `" p9 n: m5 l6 Y# _1 a
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94/ |$ Q) d8 O/ d1 X
第6章 字符串操作 95
- V7 s7 ~0 N! H: E+ o0 m6.1 处理字符串 95
3 Q, S& n9 Z% H1 T6 {. R/ O6 c2 T6.1.1 字符串字面量 95
. b$ G3 u6 @ T) @2 N1 F# D6.1.2 双引号 96: l& v, c Y. i7 _
6.1.3 转义字符 96* i6 u: a" D& x
6.1.4 原始字符串 96
2 j+ s& y, j. [2 o* { Z6.1.5 用三重引号的多行字符串 97
* d% w$ t8 {; Z; e# V0 O; S: o6.1.6 多行注释 97
( T7 U' z# k6 L o c8 z9 y8 j2 b6.1.7 字符串下标和切片 982 i; K' x, g0 f7 o5 U5 @
6.1.8 字符串的in和notin操作符 98
2 Y0 \) Z, @) V; H+ u; w3 p/ z3 F" T6.2 有用的字符串方法 99
( ~0 w- {5 y9 i# l6.2.1 字符串方法upper()、lower()、isupper()和islower()99 @! y% I+ i. E; S6 Z0 B: P
6.2.2 isX字符串方法 1008 b1 p# x8 h3 _
6.2.3 字符串方法startswith()和endswith()1027 I8 g) G# U3 A, V# v0 }
6.2.4 字符串方法join()和split()102
! n" z) ~5 U4 a& p' A/ \. [6.2.5 用rjust()、ljust()和center()方法对齐文本 103- W. J* ^0 B- ]; Z2 H9 ?& P% p
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
+ |# Q( B6 R/ g( r9 z6.2.7 用pyperclip模块拷贝粘贴字符串 105& u- a2 T5 l+ ]7 I
6.3 项目:口令保管箱 106) v# V4 t s* c! o; \3 t0 v1 \
第1步:程序设计和数据结构 106$ @$ I3 H- S( w, F W3 x0 \
第2步:处理命令行参数 106
4 [& g Z1 W a3 D第3步:复制正确的口令 107
. N" C0 C* ?; r6.4 项目:在Wiki标记中添加无序列表 108+ D- X/ C* I: N$ X2 T! n4 [
第1步:从剪贴板中复制和粘贴 1080 g1 N7 ?/ m' E \6 e1 H3 v
第2步:分离文本中的行,并添加星号 109
% D+ P4 A$ @9 g$ I第3步:连接修改过的行 109
. P$ z( t% W3 g& V- k. w3 q: ^7 J6.5 小结 110
9 U/ q+ N9 s4 }3 ~1 {0 }3 D6.6 习题 110
1 k$ n1 W3 E* _' o+ `' T# V: H6.7 实践项目 1112 v% j* ?1 W0 H3 H
表格打印 111
' \2 V" ^5 t& E& c# w; H第二部分 自动化任务% O' H) F- |2 r8 E
第7章 模式匹配与正则表达式 115
) L( M+ |$ p1 b; b& U) s7.1 不用正则表达式来查找文本模式 116
" y& |6 A8 f0 J1 ?! d/ ]7.2 用正则表达式查找文本模式 117$ n+ k) Y! {4 d5 P, |! {. ^
7.2.1 创建正则表达式对象 118
! z) \" U. N- g5 f' O* k; q7.2.2 匹配Regex对象 118& \7 q, Y0 [* U
7.2.3 正则表达式匹配复习 119
: u% P4 a: g( R* h/ s7.3 用正则表达式匹配更多模式 119
1 I) x3 A, l2 H- A7.3.1 利用括号分组 119
1 [$ M! f+ B' R( ^7.3.2 用管道匹配多个分组 120
& o( `# M% n$ y1 B0 d9 r, t' g. @7.3.3 用问号实现可选匹配 121
1 F$ K6 `+ [5 Y7 m& L7.3.4 用星号匹配零次或多次 121$ G* W6 ]# |& [" C# ^
7.3.5 用加号匹配一次或多次 122$ H' G3 I9 ?* j) p
7.3.6 用花括号匹配特定次数 122/ l7 ]3 a1 y& x' g/ R( N
7.4 贪心和非贪心匹配 1238 m* T, z( Y; [" @
7.5 findall()方法 124: {1 R9 r' L2 c5 ~
7.6 字符分类 124
9 I# |7 Z! V( w: X. Y4 ^7.7 建立自己的字符分类 125
1 m# O; Y% \7 r; \7.8 插入字符和美元字符 126
; a- M. G" Y8 [4 w/ M y1 T7.9 通配字符 126
6 @0 D$ E% e2 {( D0 ^2 b7.9.1 用点—星匹配所有字符 127
! e1 M% ~2 `$ B& E0 x" h) V/ p7.9.2 用句点字符匹配换行 1276 d* b) a/ T) e+ M
7.10 正则表达式符号复习 128
6 T0 v' b0 S! F* [% I7.11 不区分大小写的匹配 128
) X9 s3 h, W( E* `$ T2 T c7.12 用sub()方法替换字符串 129
2 ^5 q1 A, H. S- O+ E7.13 管理复杂的正则表达式 1290 `8 H7 c; f+ W, D! [- @
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130/ H2 M* \- A+ `4 F4 Q( G
7.15 项目:电话号码和Email地址提取程序 130/ a5 _" [0 ~- I* a4 F3 W
第1步:为电话号码创建一个正则表达式 131$ F9 c: r" b a# \
第2步:为email地址创建一个正则表达式 132% `6 n' Q, p, n3 r8 \- p9 j
第3步:在剪贴板文本中找到所有匹配 1326 K+ e! z+ j+ ^$ V! F
第4步:所有匹配连接成一个字符串,复制到剪贴板 133+ G, [& I( ~7 y5 `; N) @( I% S
第5步:运行程序 1333 g5 Q, B( q* P2 S! D* J* U' K) `: o
第6步:类似程序的构想 134
5 h, H* I. J8 t R7 _; H: }7.16 小结 134
' N* m k2 l0 l. S, F7.17 习题 134
& i- A/ m$ W _" j% y7.18 实践项目 136/ f8 c& D/ K6 I$ ]
7.18.1 强口令检测 136( c( n$ s) e- u# Q2 \) g
7.18.2 strip()的正则表达式版本 136. c; d, a/ V; _7 f3 V
第8章 读写文件 137
5 s$ ~: W$ Z m" P/ {8.1 文件与文件路径 137$ E. L6 ?( M6 |- P% A1 Q% {
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138- `+ p/ H8 n$ |' z2 v7 O
8.1.2 当前工作目录 139
N$ x5 p- U1 K7 w/ k8.1.3 绝对路径与相对路径 139; n6 r5 z1 Y' m; v. I
8.1.4 用os.makedirs()创建新文件夹 140
- x/ D: S, Z& f: t8.1.5 os.path模块 140
2 h$ o5 e5 q1 E& o9 ^0 e) R8.1.6 处理绝对路径和相对路径 141
+ c9 t ~3 m1 z" _' j8.1.7 查看文件大小和文件夹内容 142; Z& [* u5 r$ P: p/ F
8.1.8 检查路径有效性 143! I( ~& v* E! ^1 I" H
8.2 文件读写过程 144
" V( x) ~9 D2 p6 w0 R+ K8.2.1 用open()函数打开文件 1459 h2 t9 H$ r0 [+ |; a
8.2.2 读取文件内容 145- [, |+ B l; J( H7 }8 e% n
8.2.3 写入文件 146* s1 C$ }; R; u' F+ r" y, e. {
8.3 用shelve模块保存变量 147$ e/ q$ H- C9 {' M! e1 T
8.4 用pprint.pformat()函数保存变量 1487 d5 e3 O/ Z3 a8 T a& B+ G8 q
8.5 项目:生成随机的测验试卷文件 1497 f9 I7 v0 [' y. L! ?) W" B2 l6 L u
第1步:将测验数据保存在一个字典中 149
* c' Y) ?! j7 D( p第2步:创建测验文件,并打乱问题的次序 150
# v1 E0 g# g. B7 E0 e9 `" _* J第3步:创建答案选项 151
1 ^. L4 \- _: K3 \. m# V. u- D第4步:将内容写入测验试卷和答案文件 151
% K& `8 B; Y; Y4 R# p' v2 e- U. A2 v1 t- @' c( s; N
|