|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
$ G% @- ]& j) B) B
! w% b/ _0 |# I7 }内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
/ r( { u: S4 }! [, S, F# Y5 \3 {4 ^7 j5 _
8 z9 Q. C2 |% }) N作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
# ?* p! g' v$ b# q& Z9 Z" Q第1章 Python基础 31 M& |7 }% G/ O1 m6 {4 B+ s
1.1 在交互式环境中输入表达式 3* H0 x* `8 H* k8 [- t8 a) t
1.2 整型、浮点型和字符串数据类型 6
3 @5 y! ~3 v+ R$ B6 n0 h+ R: {1.3 字符串连接和复制 6
& p7 m x2 J4 c1.4 在变量中保存值 75 g: ~( {0 V M7 ^) ^% z9 H. ?
1.4.1 赋值语句 75 Z7 K) Q4 Z* G- P: d
1.4.2 变量名 9 D' Q! U' M$ n% s n. ^( s( p- {, d
1.5 第一个程序 9
2 Y) J- I) p$ ^) F: {6 M+ X1.6 程序剖析 11" U# V- G6 R' R/ M
1.6.1 注释 11 k0 N4 y7 M: X6 t& B Y
1.6.2 print()函数 11
0 A3 `4 k# R+ V+ `, q; F% h1.6.3 input()函数 11
/ v' t# e: w: b/ L8 g1.6.4 打印用户的名字 12
( B, l2 I, n" r8 @1.6.5 len()函数 12
1 l6 ?& H8 B* G7 D8 J3 x* t/ g1.6.6 str()、int()和float()函数 134 i% ~3 M; G. d8 N
1.7 小结 15
& _' @& s' n) \# b9 J- b1.8 习题 15
' z2 d7 G2 U& I7 f Z: m" [1 @第2章 控制流 17# j* J5 w# f/ [& l
2.1 布尔值 18" s. c& p8 h3 G2 ^+ D
2.2 比较操作符 194 U: S0 J1 f4 |$ l
2.3 布尔操作符 20
' i' _: w7 y" j9 y2.3.1 二元布尔操作符 20
& j3 v: S% Y2 u0 f' B8 w6 a) D2.3.2 not操作符 21- q% k0 b K' m0 o
2.4 混合布尔和比较操作符 21
: ]. L5 l8 I5 l, V2.5 控制流的元素 22- p. ^0 V% Q7 d( {
2.5.1 条件 22
( h2 T6 l7 T d3 [. |+ V2.5.2 代码块 221 F* G3 x% ~9 n4 f8 |
2.6 程序执行 23
8 }5 B7 x% e8 _4 [2.7 控制流语句 23
2 d" E4 G, B2 w2 m2.7.1 if语句 238 O* s' f b- Z* f7 @% E
2.7.2 else语句 24" N7 L _2 _6 `
2.7.3 elif语句 25
% b1 M& j& M! K! u+ h9 Z2.7.4 while循环语句 30, j$ i3 i7 M% _- |6 X. }6 T8 _/ r. w1 d
2.7.5 恼人的循环 310 m( p, }- G0 s
2.7.6 break语句 33
" Y2 D: c! k' k" o! \2.7.7 continue语句 34+ d! @) G) X$ |! [6 Q, p* ?
2.7.8 for循环和range()函数 37
6 u* i6 O( ~1 u) ^2.7.9 等价的while循环 39: K; C# f4 z: b1 w* y' u4 s
2.7.10 range()的开始、停止和步长参数 395 G, [2 r% z( I
2.8 导入模块 40from import语句 41! i8 {9 Q0 E, F: Z1 \9 P
2.9 用sys.exit()提前结束程序 41
/ H" p) Z4 V/ ~. `5 e4 {2 R2.10 小结 41
6 A# `% N$ n, `, ]" B2.11 习题 41" s! D; }, h8 g- i$ i4 o1 W, x
第3章 函数 43+ C- Q! y, f" `; b4 _! D
3.1 def语句和参数 44
& l7 Y9 D* j' B1 n3.2 返回值和return语句 45
' n! y: i2 a0 D, y/ |9 q( @3.3 None值 46
9 q+ n. D7 ?$ q3.4 关键字参数和print()47
' |! D: v2 Z) a" |* Y0 ]2 C0 t: Z3.5 局部和全局作用域 48, S: D+ P0 ?9 ?) s" h- q1 {
3.5.1 局部变量不能在全局作用域内使用 48* R4 o/ c$ T$ V4 y2 W
3.5.2 局部作用域不能使用其他局部作用域内的变量 49
7 w. _; r" D+ k9 R- b3.5.3 全局变量可以在局部作用域中读取 49" Q( U' t X7 \
3.5.4 名称相同的局部变量和全局变量 50) E8 _/ k `8 `+ Z% A
3.6 global语句 50 Y/ }" l) V5 F$ s' N$ ?3 v
3.7 异常处理 52
; I9 B6 m" Y) \6 `: G3.8 一个小程序:猜数字 548 R, ^ ?/ w5 k5 e8 i# q c) ~4 D
3.9 小结 55: ?3 }( ]! F+ c
3.10 习题 56+ \( D6 I0 a7 b1 p4 {
3.11 实践项目 56
: R; f! T, h0 g/ e D3.11.1 Collatz序列 56
1 h: g9 R8 A5 Q+ `" v- j+ a4 i0 r3.11.2 输入验证 57
4 u% J: u3 G* {第4章 列表 59
+ Y; t+ f9 W4 R0 N5 w1 r4.1 列表数据类型 59, v, Z& m' C: C5 d# N( }
4.1.1 用下标取得列表中的单个值 600 s% g, w: U, F
4.1.2 负数下标 61* A( }1 n: t7 k0 t
4.1.3 利用切片取得子列表 61
$ D1 N" n5 `6 N" n: ]/ o4 c4.1.4 用len()取得列表的长度 62# n, _* z" ~- \+ k2 P1 N, F
4.1.5 用下标改变列表中的值 62
. T9 j# `! L/ J( A4.1.6 列表连接和列表复制 62
( H% p$ \5 v9 b; G) K9 c9 L6 V4.1.7 用del语句从列表中删除值 63$ ~# N; m w9 A$ ^$ Q4 z# l. g: u
4.2 使用列表 63
w3 j3 S _8 x; f4.2.1 列表用于循环 64
, T( e# p. C! [# U! g `4.2.2 in和notin操作符 654 F& Z( O( i3 h# F* n. H' r( d
4.2.3 多重赋值技巧 66
* G# q4 ^; l3 G j8 Y+ D+ R4.3 增强的赋值操作 666 O8 l" g" m" T7 X* ]( n
4.4 方法 67
. V" J* r& T# t6 d8 T4 I4.4.1 用index()方法在列表中查找值 67. [! D$ a+ x" l: r3 g; a4 i$ j* v
4.4.2 用append()和insert()方法在列表中添加值 689 U9 \" |+ g( U0 @$ N+ O
4.4.3 用remove()方法从列表中删除值 69
, s- q# O$ T7 d) R- n4.4.4 用sort()方法将列表中的值排序 69
# z1 F, a3 }% q+ o4.5 例子程序:神奇8球和列表 70) Q- Y! {+ j/ R% p2 ?( a
4.6 类似列表的类型:字符串和元组 71
* U! a% ~; K/ W4 |* A2 m4.6.1 可变和不可变数据类型 724 P$ v( Z, d+ O. u* V4 ?
4.6.2 元组数据类型 737 S- q8 W0 }8 B
4.6.3 用list()和tuple()函数来转换类型 749 U. x& D, t8 f# G$ v: U0 j
4.7 引用 75# B) S/ @" ~" v. O" }3 v, n
4.7.1 传递引用 762 Z4 O' n. b" k* M
4.7.2 copy模块的copy()和deepcopy()函数 77 k0 c( H8 h# i' f/ Y8 V
4.8 小结 78' ~4 ?" f- G, p' b/ _7 f- ]! w
4.9 习题 78
& H$ q( m0 y+ g# ^4.10 实践项目 79" g p) ^* |5 ?, n8 t- b8 Y
4.10.1 逗号代码 79
' e& l2 R1 `9 o Q4.10.2 字符图网格 798 O2 }8 b8 L. S! G* e6 n
第5章 字典和结构化数据 81, i& X) W; {. D
5.1 字典数据类型 81' E0 O4 I) U& V/ j9 U; v3 |
5.1.1 字典与列表 82
4 Y& V2 c/ Z( V! ]5.1.2 keys()、values()和items()方法 83
8 G7 [9 F, i. `8 Z) K5.1.3 检查字典中是否存在键或值 844 g/ Z3 o' j, H, o/ V! p
5.1.4 get()方法 84
1 K6 T, x- F8 w% v5.1.5 setdefault()方法 85
% ]$ {7 X- V+ p/ R, m: C+ j5.2 漂亮打印 86/ N2 Y5 A. @5 @
5.3 使用数据结构对真实世界建模 87* f8 @$ V3 n L; v' c
5.3.1 井字棋盘 88" M/ h1 O) }5 @$ x. t3 S: X
5.3.2 嵌套的字典和列表 91
) n2 ]2 j5 K) u5.4 小结 92
- O) N* [0 \- d" `' l( L5.5 习题 939 B4 Z' P/ ?( B$ G* q4 R
5.6 实践项目 93
. a% S8 k5 P! g9 e) l- J5.6.1 好玩游戏的物品清单 93( Y. t, `5 \5 K, c$ a0 a# l9 L1 P
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94! {( W9 \8 h7 ^! J, B
第6章 字符串操作 955 W$ a- @9 p* j/ n, A+ U
6.1 处理字符串 95
; R1 C3 A& O6 V& c6.1.1 字符串字面量 95# H4 |4 |) _. J+ g6 x* _$ G
6.1.2 双引号 96
4 [2 K( Y% d; V6 ? w) F6.1.3 转义字符 96
3 W/ q4 ?4 Y/ A7 |6.1.4 原始字符串 96
3 Z& A* X0 E. ~7 p6.1.5 用三重引号的多行字符串 973 }% d ?% [! x) v/ N
6.1.6 多行注释 97
; a( @& e/ q. y4 S6.1.7 字符串下标和切片 98( V. C }# c4 ^- U( ?3 v5 c: F
6.1.8 字符串的in和notin操作符 98
9 P2 O' }& Q' D' f3 K; C9 k6.2 有用的字符串方法 99
& t" u! G- S2 E) ~6.2.1 字符串方法upper()、lower()、isupper()和islower()99
3 |: L+ X8 F/ b4 z3 q) M$ t8 h: ]0 K6.2.2 isX字符串方法 100
5 B. i1 Z2 f$ Y' {: D( {* W$ P, M6.2.3 字符串方法startswith()和endswith()102
, \5 _" d7 U# v6.2.4 字符串方法join()和split()102
# k8 R; O a7 M0 V8 @1 q$ a! Q* X6.2.5 用rjust()、ljust()和center()方法对齐文本 103
+ A$ X5 }8 e* F6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
# r) i! z- A& a- D6.2.7 用pyperclip模块拷贝粘贴字符串 105* |- S2 t* j: @ G' J% t# V( @
6.3 项目:口令保管箱 106
8 H0 F7 \+ ?1 @: }# H& c第1步:程序设计和数据结构 106
8 ?: t. D2 b: g' @第2步:处理命令行参数 1066 _1 v0 h9 k* b: s2 T" e9 p& D5 a
第3步:复制正确的口令 107
6 @+ x9 t1 _# k) B6.4 项目:在Wiki标记中添加无序列表 108- R7 V9 w% t. p; `, q. V; a
第1步:从剪贴板中复制和粘贴 108, N. _0 _% [4 y
第2步:分离文本中的行,并添加星号 109
! V) |$ R0 F/ u0 h第3步:连接修改过的行 109
: M" _# V/ w- s& h6.5 小结 110
6 {! O0 i: H6 I7 F/ C4 u& m6.6 习题 110
1 U% l' S. [8 j, R# p6.7 实践项目 111
& B# V6 o- x9 V+ k表格打印 111
$ V' z' o& s) G: j第二部分 自动化任务
. { E# h+ Z/ N/ U, ?* {& J第7章 模式匹配与正则表达式 115
4 O: @! }" S! P7.1 不用正则表达式来查找文本模式 116
3 S- d* b4 p, v7.2 用正则表达式查找文本模式 117
' D8 D% E0 e4 ~. S4 D7.2.1 创建正则表达式对象 118
# Z6 k- z( A) Y% j$ }9 q8 f8 v7.2.2 匹配Regex对象 118
! E0 D; @# O+ ~' E/ _7.2.3 正则表达式匹配复习 1196 ] K- R6 o, p. p+ c7 g
7.3 用正则表达式匹配更多模式 119
% ^/ \! Y7 W5 _* i5 G+ R' e7.3.1 利用括号分组 1198 K, d. |6 i3 n/ @! z
7.3.2 用管道匹配多个分组 120; G& F7 {$ c, G+ N6 V. c
7.3.3 用问号实现可选匹配 121
$ m% m$ \0 p0 n( Y6 N6 _8 Z7.3.4 用星号匹配零次或多次 121
& D( R! T) l* L7 P0 Y1 q7 Z7.3.5 用加号匹配一次或多次 122
- `6 t* R+ N% k0 c$ n; v0 u7.3.6 用花括号匹配特定次数 122
5 T% Z( M( [, `* J8 E7.4 贪心和非贪心匹配 1239 d* g+ t, T1 R2 z! [) ~9 t0 U
7.5 findall()方法 124( V; F8 g# m/ l0 a0 l* T
7.6 字符分类 1249 o- w' ?! ~ |1 n( E
7.7 建立自己的字符分类 125
9 z# d q: n$ ?- V2 M/ |% o' v7.8 插入字符和美元字符 126
; D* F$ H/ b6 C* x0 l% Q7.9 通配字符 126
* ]" }( B# r) v) n* h! B2 _7.9.1 用点—星匹配所有字符 127
3 {$ m2 G1 C7 F3 b, L7.9.2 用句点字符匹配换行 127# }# D; ?4 Q+ Q! c
7.10 正则表达式符号复习 128
+ r# i0 y9 t; B- y2 Z* Y& J6 o3 J. @4 W7.11 不区分大小写的匹配 1286 R L$ I) t$ X+ `0 Q
7.12 用sub()方法替换字符串 129; k. D/ J0 G* t& Z
7.13 管理复杂的正则表达式 129
+ I+ Y' T1 `' x6 w9 B5 f7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
2 h8 }; e, g9 `* Z" h7.15 项目:电话号码和Email地址提取程序 1306 p% g9 _ S' k- K' }
第1步:为电话号码创建一个正则表达式 131
9 v: t" d# f4 `8 y2 k第2步:为email地址创建一个正则表达式 132
/ _5 B8 ~; w' W* B+ Y' S" }第3步:在剪贴板文本中找到所有匹配 1329 Q6 p/ w" |" o! \; v0 o5 x1 e
第4步:所有匹配连接成一个字符串,复制到剪贴板 133 y# s, ^( l' ?1 r1 Z
第5步:运行程序 133
% W3 W" G1 P) n0 ~+ E第6步:类似程序的构想 134
+ {3 P: a( }- P; K9 v7.16 小结 1343 _' L; z$ {) W' n
7.17 习题 134
; k' J0 c' G, E; Q& r7.18 实践项目 1368 m( ^/ m6 a$ X( w) B
7.18.1 强口令检测 136
) X" u" ^ V1 S( w. R& ]7.18.2 strip()的正则表达式版本 136
. s8 Q, x2 t8 ?9 m b第8章 读写文件 137
. c: R2 ?2 ?+ ]& B8.1 文件与文件路径 137
- Y& b X9 g+ ^8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
" [/ y. t% D: A8 ~& M1 c, Q8.1.2 当前工作目录 139) E3 Z' e+ ?8 K1 L
8.1.3 绝对路径与相对路径 1394 R) h/ Q7 \ F7 S2 ~
8.1.4 用os.makedirs()创建新文件夹 140+ S3 Y4 B$ x0 E% ?5 z
8.1.5 os.path模块 140
# Z7 P! A" ~6 J: e2 A8.1.6 处理绝对路径和相对路径 141
7 q9 u& x- I& j/ s1 J( _2 B8.1.7 查看文件大小和文件夹内容 142
# a; v ]' y0 a6 ^) x5 R8.1.8 检查路径有效性 1432 P4 [; G/ ~+ \# k! [
8.2 文件读写过程 144& T/ V) R* t; B& u5 l: [
8.2.1 用open()函数打开文件 145( c0 C. M2 `# O
8.2.2 读取文件内容 145
0 ~ n1 x* @$ D Z* V+ C" P5 k8.2.3 写入文件 146
, a, y* `9 G* [7 K8.3 用shelve模块保存变量 147 `: n0 t* x& S) M2 O! j- y* D
8.4 用pprint.pformat()函数保存变量 148% ?* j, F/ g& x4 `: `* {* n. `8 L' b
8.5 项目:生成随机的测验试卷文件 1492 l" g$ t8 d2 w/ Q
第1步:将测验数据保存在一个字典中 149
: e7 A+ ^) n0 a4 G/ }/ d( d第2步:创建测验文件,并打乱问题的次序 150" [7 Q8 M# U5 H9 U
第3步:创建答案选项 1519 K8 {+ s l9 g s4 p
第4步:将内容写入测验试卷和答案文件 151
' _# h0 M+ N4 R, b. x
" C; v2 Q( _1 m# B6 B! \ |