|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
/ K/ G8 c Y7 M: W5 Q/ b. q! m* q2 _4 F! s7 O
内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
4 ^$ G( f1 R; K2 Q$ Z
" a7 O/ J! {( }6 a
4 z1 @/ M# ]8 [' H% u- h/ w. m作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
& @+ t' a! `, G4 F2 u第1章 Python基础 3& I) U& p [$ Y
1.1 在交互式环境中输入表达式 3
8 b3 @* T2 J7 b/ I6 I- N1.2 整型、浮点型和字符串数据类型 6* G* x# d' Z# x$ c
1.3 字符串连接和复制 6
& ]- p D- v9 q8 K1.4 在变量中保存值 7
* X0 V3 P5 _ f- p, R9 T1.4.1 赋值语句 7) ], l% B1 s6 x% e% u
1.4.2 变量名 9
: F* @) R9 b" s* A0 e- H- r1.5 第一个程序 9
a P) n; p1 L/ i1.6 程序剖析 11
2 q+ d0 u& K: K4 q8 D' P2 i# D; J1.6.1 注释 11% L" R7 c; W, G
1.6.2 print()函数 11
0 @! D3 [5 M5 m( @$ [3 M1.6.3 input()函数 11% H5 |3 P, k6 f& p
1.6.4 打印用户的名字 125 {0 Z9 j' }6 z% e9 d- ]
1.6.5 len()函数 12; E5 N. K6 ^8 l! U- |* a! ?5 t3 z
1.6.6 str()、int()和float()函数 13
$ Z( d4 H( C# n1 i. c4 \4 S0 l1.7 小结 15 _ f5 U+ k. L7 V. d4 W. s8 ~
1.8 习题 15
# L' w0 L7 T) k* k; X+ Y第2章 控制流 17
) c4 I+ d$ S4 B$ u2 D5 E2.1 布尔值 18
( P1 n: G/ @8 u {2.2 比较操作符 19" D1 c% X( D0 ]$ u
2.3 布尔操作符 202 O. { d+ l, `4 s, w: l; t
2.3.1 二元布尔操作符 20; X% R' R+ t( F
2.3.2 not操作符 214 U6 N& A* A3 ~( Z' M
2.4 混合布尔和比较操作符 210 n2 m) m4 W5 V7 D# B$ t9 {
2.5 控制流的元素 22* C, f2 Q9 q/ }7 s9 U2 E
2.5.1 条件 22/ ]2 X* W5 L5 p& M$ C
2.5.2 代码块 22
2 I' Z6 Z3 X. w$ H( a6 l2.6 程序执行 23
3 ?; J7 F8 U, l5 A6 w- E2 W2.7 控制流语句 23
+ x8 Y$ o. B- V) B2.7.1 if语句 23
* Z9 }- ]- J+ z0 x+ d2.7.2 else语句 248 c# |& V5 y0 U, f! Z- j0 r& n
2.7.3 elif语句 25
% y8 M" y: h; A0 O6 ]$ {1 {2.7.4 while循环语句 30 d" i, O% g( B* F% }
2.7.5 恼人的循环 318 t. t* _3 J, i7 e& [
2.7.6 break语句 33 ?+ T/ b1 u& O. Z. d: w: f
2.7.7 continue语句 34: x1 P b/ y3 S( Q# x* c
2.7.8 for循环和range()函数 37
0 K3 X4 f. g5 v5 b) a2.7.9 等价的while循环 39* ?+ X/ h- K. s1 v
2.7.10 range()的开始、停止和步长参数 393 j( X+ f0 N3 ^
2.8 导入模块 40from import语句 41- A8 A6 x' y: A
2.9 用sys.exit()提前结束程序 41: i( @4 v/ M7 M4 ?
2.10 小结 41; Q$ u8 J4 _: Z3 n. k; ^- G
2.11 习题 41
2 n% I4 q: T7 X8 Q& B2 @" L5 o第3章 函数 43
: ]9 P6 G; z. S3.1 def语句和参数 44
$ a5 s# R9 |% [8 s9 J5 {0 z3.2 返回值和return语句 45
. ^) ^9 S' t- a2 H5 Z3.3 None值 46; U& H r# p4 x. w- }
3.4 关键字参数和print()47 s' ~+ d+ V5 ^: H6 } N, m
3.5 局部和全局作用域 48
. a' I. G4 S) L, j3.5.1 局部变量不能在全局作用域内使用 48
3 m5 q2 W& S( s9 Y. j3.5.2 局部作用域不能使用其他局部作用域内的变量 490 y. V, w4 b0 S: |$ _4 P
3.5.3 全局变量可以在局部作用域中读取 49
$ X: e" C) q1 o7 C% p$ V3.5.4 名称相同的局部变量和全局变量 50
) m. r+ V. }9 `2 K4 g# O* h' i3.6 global语句 50. @+ _8 _ v5 |, ~7 J7 Y' `3 w
3.7 异常处理 52
' {6 F1 n1 R% f. g3.8 一个小程序:猜数字 54: M7 a+ ]7 v# |
3.9 小结 551 U- h/ R$ p7 H1 Z% M- H( i0 M
3.10 习题 56: R; y0 g8 Z" b. G/ Q
3.11 实践项目 568 `: v& p' [! B2 `- K0 q/ z) A. p$ A
3.11.1 Collatz序列 56
O6 D+ F: c* n6 _. C' r/ c3.11.2 输入验证 574 G8 j* A0 s' r/ j; b
第4章 列表 597 M7 \! k/ I1 {- | n- w4 C% I5 C
4.1 列表数据类型 59$ c0 z! I2 R, K
4.1.1 用下标取得列表中的单个值 60
: d$ G& n/ W) M v! B: q0 x4.1.2 负数下标 61! P' D/ l8 h- h7 B' ~3 U
4.1.3 利用切片取得子列表 61% o( G; d6 m0 N- ^1 l' w" F+ ?# M' A+ Y
4.1.4 用len()取得列表的长度 62
) U1 T* I$ ?: J2 s3 P% X4.1.5 用下标改变列表中的值 62% b8 j5 Z( ]& M+ \8 B# l2 U: ]
4.1.6 列表连接和列表复制 62! Z, }( R% x! ?7 v- [
4.1.7 用del语句从列表中删除值 631 `, o. z$ W4 ~' N0 L
4.2 使用列表 631 d/ j1 a6 T' F; ^; {$ Y, g% r
4.2.1 列表用于循环 64" A2 s0 z+ C$ _% p1 p% U J1 w
4.2.2 in和notin操作符 65, N5 p N+ a# ]
4.2.3 多重赋值技巧 66) g# s8 e( U3 s% J
4.3 增强的赋值操作 66
1 [+ f k6 y1 P: _( b; ?7 [4.4 方法 67# ?3 N8 @* N3 T5 Q. a
4.4.1 用index()方法在列表中查找值 672 Z4 v2 e- `- m6 L
4.4.2 用append()和insert()方法在列表中添加值 68
9 ]( ~4 u5 l, U- x! A: G4.4.3 用remove()方法从列表中删除值 69) ]* u+ w/ d- v$ t
4.4.4 用sort()方法将列表中的值排序 69, k- }3 E( u+ l3 [, U6 D, @' V4 t
4.5 例子程序:神奇8球和列表 70' R) A! E' x/ i6 f9 X
4.6 类似列表的类型:字符串和元组 71
1 m. X1 [% M3 }! N4.6.1 可变和不可变数据类型 72
" [. |0 M" T) s# L+ k" ]4.6.2 元组数据类型 73
5 T0 o9 `0 y) y4.6.3 用list()和tuple()函数来转换类型 740 T8 f4 I, f# y7 S8 p! J
4.7 引用 753 o% B6 j. c; `1 S$ N# H8 i. K; q
4.7.1 传递引用 76
9 g) \4 Z5 e& p4.7.2 copy模块的copy()和deepcopy()函数 77
p' K! R" U$ B0 s& C$ x9 l% o4.8 小结 78* F( q B; j! l1 W! C/ N
4.9 习题 78
; i+ W8 c. u E* Z( _8 R4.10 实践项目 79& d( a$ f. s. q9 ^, K# E
4.10.1 逗号代码 79
# Y7 C @( Y8 a9 G/ O- Q4.10.2 字符图网格 79
, J I+ n4 ^* `4 x) d/ ]第5章 字典和结构化数据 81' B" L* }) E4 q2 @- b4 i0 x
5.1 字典数据类型 81& h1 c4 @+ V2 m G2 F3 P5 ?1 n
5.1.1 字典与列表 820 s; b1 C( ?- v0 i% [# y3 P. A3 U
5.1.2 keys()、values()和items()方法 83; F5 o+ s1 N) m1 I0 \+ g1 r- c8 I' r
5.1.3 检查字典中是否存在键或值 84
6 \9 Z) `4 o4 I4 Q+ v% M" g5.1.4 get()方法 84
: R" G1 M/ }: V+ y- Z* u! s8 n5.1.5 setdefault()方法 85( O8 E- T" R& A7 E1 B1 {( `
5.2 漂亮打印 869 s" ^- u8 \; Y# C- ~# }
5.3 使用数据结构对真实世界建模 87, e! x, @/ }6 l9 d1 R( B
5.3.1 井字棋盘 88
) M* P5 C/ ]) i2 Z3 x5.3.2 嵌套的字典和列表 91+ @. d7 ? y1 W. [) @
5.4 小结 923 {9 ? ?6 h% R2 a* x1 m4 y8 s1 ]2 D
5.5 习题 93
! E$ B& J5 A, C8 f0 ?0 v% C9 p U5.6 实践项目 93. L. g- ~2 Q1 Z! F9 K& y
5.6.1 好玩游戏的物品清单 93& ?) p7 D; C1 O- b) D
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94
! t* W( ?: j) b$ ^& c r+ _ g第6章 字符串操作 95
* K3 n! y3 W' x& q: C1 }" }4 v- L2 j6.1 处理字符串 95( z1 E! K& D+ g, C" z9 b0 c
6.1.1 字符串字面量 95
, @. N+ E4 r. B9 V2 Q* L) ~6.1.2 双引号 96- \( G9 n" }2 ]
6.1.3 转义字符 96- c$ Z; u! ~- m; [! {% n1 A
6.1.4 原始字符串 96, P3 ^! G5 q: l: { Z
6.1.5 用三重引号的多行字符串 97
7 V* B& A, V- F2 w& e, X6.1.6 多行注释 97& t, @4 K- _: l; Q3 [
6.1.7 字符串下标和切片 983 O$ Z% w0 z& s0 z, ?
6.1.8 字符串的in和notin操作符 98! q% N6 o T' k* O0 Z- [, V
6.2 有用的字符串方法 992 o- P- b7 u1 g {& h. Y0 `! Z
6.2.1 字符串方法upper()、lower()、isupper()和islower()99
, Z1 K, a" R8 K; C6.2.2 isX字符串方法 1009 k o. y0 a( Q$ m) O
6.2.3 字符串方法startswith()和endswith()102" [) j/ z$ R: c4 J$ m/ L
6.2.4 字符串方法join()和split()102
. p: f, q) G& q8 u$ Q) E# |0 l6.2.5 用rjust()、ljust()和center()方法对齐文本 103/ Z% c5 k! z9 `! e! X" o
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104
: c1 g& y* k3 s9 b- q: |6 x' f7 a6.2.7 用pyperclip模块拷贝粘贴字符串 105
+ s' c1 p- X" l6 ^8 {1 X3 c( {6.3 项目:口令保管箱 106
1 {8 n: h% E0 P% l8 |第1步:程序设计和数据结构 106* w2 |, E. r7 x" P2 y/ n
第2步:处理命令行参数 106
5 ]: @. T8 [, o( e, Q. p) D第3步:复制正确的口令 107# E; O) x- p0 F1 @# Q
6.4 项目:在Wiki标记中添加无序列表 1089 t0 p s" |' F2 }1 S6 \* o
第1步:从剪贴板中复制和粘贴 1080 k& N5 g/ u. v
第2步:分离文本中的行,并添加星号 109
+ b- P$ w8 H6 P, L" n% O, y4 a第3步:连接修改过的行 109
* j# W# K# ~9 e2 U b, t0 A6.5 小结 110. d: t" P* Z" ^+ a
6.6 习题 110
5 Y) s$ v6 ]' e$ B' R( [: c' Z/ k: ]7 O6.7 实践项目 111) F0 {# i! e& g. p0 T
表格打印 1110 O& o3 \- _; S" Z7 K, s8 X% e5 s1 O% B
第二部分 自动化任务5 L8 p" e4 h; N7 {! Z$ n# U' C
第7章 模式匹配与正则表达式 115% _ l) f6 t1 e A$ l) W1 j/ [
7.1 不用正则表达式来查找文本模式 116
4 l0 ^: h6 [* G* y7.2 用正则表达式查找文本模式 117: C! n8 y! V$ n! H6 R5 g
7.2.1 创建正则表达式对象 118( P+ G3 D C! P3 v1 F$ N, N
7.2.2 匹配Regex对象 118
$ j( T1 ^+ h2 `7.2.3 正则表达式匹配复习 119
: j5 R' d" Q8 I; S) u- r: A: C7.3 用正则表达式匹配更多模式 119
6 U: F( o4 ]2 ]% b5 M5 _' l7.3.1 利用括号分组 119
4 S& t4 F4 y, r( S) k, J' T7.3.2 用管道匹配多个分组 120& |: O3 g, ]2 ?5 y% u( t
7.3.3 用问号实现可选匹配 121
4 d3 z, S% t8 s7.3.4 用星号匹配零次或多次 1215 E$ y' Y: K4 I9 p1 ?# _5 C
7.3.5 用加号匹配一次或多次 122
% u( ~7 P: F; N9 n+ w: t" j7.3.6 用花括号匹配特定次数 122+ s* ]! a, ? T) V' m* x
7.4 贪心和非贪心匹配 123! U" o/ B% M N( P6 x1 }) l, _; f6 O
7.5 findall()方法 124
! r3 [* q0 J" `1 `* U4 c7.6 字符分类 124
0 y% |& t+ V0 ~$ `2 }$ H8 w7.7 建立自己的字符分类 125- V4 {! P/ E8 s6 Z* p) J0 C
7.8 插入字符和美元字符 126
# }' B! T$ k( o: M0 t4 c) ~7.9 通配字符 126
: l- ~+ O; q6 p/ z6 W7.9.1 用点—星匹配所有字符 127/ ~, j( g4 }7 t3 K* y( Z; D
7.9.2 用句点字符匹配换行 127
# G! f2 y& N4 m! ?( w+ r! L0 S7.10 正则表达式符号复习 128
. M1 u! ?$ I6 e, [7.11 不区分大小写的匹配 128
8 |# K. p& X! N# `5 q: Q# ]7.12 用sub()方法替换字符串 129
6 c x5 O' Z0 g7.13 管理复杂的正则表达式 129
" G( u6 n; w" Y4 Z7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130* K T+ C. E n% j# |7 u0 z
7.15 项目:电话号码和Email地址提取程序 130& R" _* O0 Z8 B% ^
第1步:为电话号码创建一个正则表达式 131
/ p7 [ ^% _- D- W第2步:为email地址创建一个正则表达式 1326 P @+ w. P! [; R" Y9 S$ V7 ?: j9 ?
第3步:在剪贴板文本中找到所有匹配 132
5 ~* \* X. X3 J$ p! j) P. R第4步:所有匹配连接成一个字符串,复制到剪贴板 133
, @1 {5 B* m4 o* Q: |8 k0 a第5步:运行程序 133
8 J( O6 l8 o* ^第6步:类似程序的构想 134
0 @0 J8 U' F2 ~ w$ @, |0 V7.16 小结 134" s2 S3 |' N! v. g# y7 H
7.17 习题 134
3 ^" Z/ x( S) v8 e' ?7.18 实践项目 136
p$ H- {) e. y* v1 E7.18.1 强口令检测 136) D, ~4 W* W1 k7 n* A8 K* |& b
7.18.2 strip()的正则表达式版本 136% z5 L1 R F8 `( O2 d
第8章 读写文件 137; e- S& F0 M( A: w+ c+ \) V
8.1 文件与文件路径 137
* T- J( ^$ f% J: d$ t5 S% w, N8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
( J/ P- \* s1 `3 { u) i8.1.2 当前工作目录 139
8 u% r( s( P) q3 K/ m8.1.3 绝对路径与相对路径 139: | S$ i" x. U* c) J- p' V9 Q
8.1.4 用os.makedirs()创建新文件夹 140
6 n6 \& E0 f, ^8.1.5 os.path模块 140
7 b5 a, e$ p% t, s+ X8.1.6 处理绝对路径和相对路径 141
3 J* I+ Y6 s9 i" ~3 p8.1.7 查看文件大小和文件夹内容 142
# _0 k) }$ [- _4 I: m9 w9 e# M: A8.1.8 检查路径有效性 143
, S( o6 Q/ @: T2 A* C5 H2 `2 i, `8.2 文件读写过程 144
2 s/ T/ ?- d$ i; r! V8.2.1 用open()函数打开文件 145; a6 j3 m! W7 r, J! I: ~
8.2.2 读取文件内容 145
0 N2 n# I" k) ?# G) D& U9 g/ @8.2.3 写入文件 146' J/ i* ^" o3 D5 {( b, {: Q2 @# F
8.3 用shelve模块保存变量 147
6 D5 A) P, E, P$ `! V5 ], w, a+ \8.4 用pprint.pformat()函数保存变量 148
6 E/ m' \) X- ~: h3 `: s8.5 项目:生成随机的测验试卷文件 1494 _; F k" o" K9 [
第1步:将测验数据保存在一个字典中 149$ C' a. Z g- P, }; }2 F1 ^
第2步:创建测验文件,并打乱问题的次序 150
2 S& W5 n6 S6 A7 }; ?! s1 N, S第3步:创建答案选项 151
: G6 O! R( G! d z第4步:将内容写入测验试卷和答案文件 151! b" U7 i5 R2 L8 j# P/ ?
& ?/ i0 y5 d9 |" o# L. P1 x0 J1 [! A |