|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
7 ]* K' f7 y" h' p2 X) ?
/ Q, e- w% u% q# f7 l" V0 [内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 l/ N: ^4 n: J E
$ l' m0 O4 b5 U D |
5 G/ d7 W; J' X作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
% l" }0 _+ ?0 v第1章 Python基础 3
+ u( R. u+ M. V( k8 I' R1.1 在交互式环境中输入表达式 3( O0 ?! a# R9 R; w: z* @
1.2 整型、浮点型和字符串数据类型 6
; l+ `& l( F' H* h5 B: P1.3 字符串连接和复制 6
1 P' f2 I" C; P s1.4 在变量中保存值 7
. ~$ M# X$ C; X0 P4 f, ]( P5 {& M6 d1.4.1 赋值语句 7" N! I; M1 d1 h
1.4.2 变量名 9) D( ?3 K4 n/ a% g2 @; \
1.5 第一个程序 9
0 G$ j) W% Y+ X1 J0 f1.6 程序剖析 11
' q) h% H+ Z7 N. u; B, w8 d( C- ^1.6.1 注释 11, F, Q! }7 {* s
1.6.2 print()函数 11
( G9 d5 P9 {( f3 B8 a* `1.6.3 input()函数 118 [) |0 P9 p" b
1.6.4 打印用户的名字 12
& v- m6 |! z( f4 r- y7 e1.6.5 len()函数 129 }. a' V( S* r" t6 A1 k- K
1.6.6 str()、int()和float()函数 13
9 E& a# k" i9 g1.7 小结 15
9 G0 o0 |3 W8 X3 z- k8 c) @1.8 习题 15
. W9 c0 e" C* X. o L. v第2章 控制流 17/ m- \% g* A' V) _( ~0 p, {" a7 m
2.1 布尔值 180 J1 n, w( M' U, ~
2.2 比较操作符 19
/ w! X% ?1 p+ H y/ c$ A2 N$ B2.3 布尔操作符 20
3 y K; p9 N0 o: G) v2.3.1 二元布尔操作符 20! `& T( ~ ?! K5 J* T+ r
2.3.2 not操作符 21& A+ ^" }6 [2 S, A# [5 N
2.4 混合布尔和比较操作符 219 a0 |! j: P9 u
2.5 控制流的元素 22
) J3 ?* Z W: x y" R/ R! x2.5.1 条件 221 n* t, q4 E( i. i! m
2.5.2 代码块 223 q/ G& l+ d" g: C
2.6 程序执行 23
x% |. ~" c: d# `' i, ~4 ?) D2.7 控制流语句 23, a+ C, F- s5 O( R: V5 r# s, O9 b7 B
2.7.1 if语句 23' C( S- ~6 u1 y5 [- G( S
2.7.2 else语句 248 y8 Y/ i6 T' i# e; k
2.7.3 elif语句 25, G) T- L% r, x6 @5 H3 W: l2 k
2.7.4 while循环语句 300 N- Z6 w& s& ?/ v/ [0 _/ {
2.7.5 恼人的循环 31
" P9 m" I6 H& `/ M9 L" v2.7.6 break语句 337 w' A# |9 R* M2 Q; K2 m
2.7.7 continue语句 34
7 q. E) k! l- @- F2.7.8 for循环和range()函数 37/ `6 ^7 ]* H6 ^/ s0 E5 U
2.7.9 等价的while循环 393 s+ n% o: b" v4 A
2.7.10 range()的开始、停止和步长参数 39! t, L2 B7 ~. @
2.8 导入模块 40from import语句 41
0 h/ k- H) F# k4 i; M. n# t6 H2.9 用sys.exit()提前结束程序 41( d- E9 [5 {) D& @) L! F
2.10 小结 41
# y0 l+ R6 `- q% Z2 v7 I( h0 l7 O2.11 习题 415 H. [2 h1 K& H2 d; ~
第3章 函数 43% P. n" X% R& p5 D& q5 ?6 k* ~
3.1 def语句和参数 443 V2 d( q$ n( Q( @" x2 g2 x
3.2 返回值和return语句 451 s: n z3 J' k1 v) Q3 N
3.3 None值 46% ` Z# E/ ~3 h* _) F9 q7 V' b
3.4 关键字参数和print()47
/ J' o9 ]0 S* x# ~! I3.5 局部和全局作用域 48
; r; V+ h9 C" c3.5.1 局部变量不能在全局作用域内使用 48
" ]) n2 [1 h) o3.5.2 局部作用域不能使用其他局部作用域内的变量 49
: m: g r( t! J; N3.5.3 全局变量可以在局部作用域中读取 49
- M0 k% g; S- f3.5.4 名称相同的局部变量和全局变量 504 Q& F1 S& d i6 p: e, {+ u$ |
3.6 global语句 50
h4 ]4 o, ~2 C0 S+ u7 l0 g$ t- T3.7 异常处理 52/ Q" c6 K2 k5 n& L* |
3.8 一个小程序:猜数字 54+ d- }8 c' `- ?' Y
3.9 小结 55* J( B1 U8 p- g! C( J# X# i6 Z
3.10 习题 56
8 C% t& s$ [5 z' l7 Y# z9 |" t3.11 实践项目 56" I, m& ]9 u, U. r
3.11.1 Collatz序列 56* j6 P9 T/ B m* {+ Y0 x4 G
3.11.2 输入验证 57
4 Y9 I) c, L2 B; C& T" h+ z第4章 列表 59+ d5 {- @8 J5 L' ]( ?
4.1 列表数据类型 59
" k# X7 U. g4 c+ M4.1.1 用下标取得列表中的单个值 60
& |, `9 u6 {( H( f6 R4.1.2 负数下标 61
% u+ W$ a5 J9 Q; Y4.1.3 利用切片取得子列表 612 P! h+ B; c' r" t2 s! G [
4.1.4 用len()取得列表的长度 627 a& W5 i9 B; Q" V" H9 W
4.1.5 用下标改变列表中的值 62# {$ f0 O: a0 o+ _
4.1.6 列表连接和列表复制 62
# ]5 ]+ r5 L7 ^' |7 ?0 f% h4.1.7 用del语句从列表中删除值 631 I; Q. `! t5 J
4.2 使用列表 63: _/ p3 C/ m/ x
4.2.1 列表用于循环 64' `. z4 i/ X8 H$ ^
4.2.2 in和notin操作符 65( R( v( {# x* V/ f: }
4.2.3 多重赋值技巧 66' c% x, J) J, b# Z1 `% a" m
4.3 增强的赋值操作 66 ]! m8 g% N1 x! p8 P
4.4 方法 675 I0 o b# I! o9 f. c
4.4.1 用index()方法在列表中查找值 67. k/ _- b0 n) I s% o: J
4.4.2 用append()和insert()方法在列表中添加值 68( P/ i! H' m3 I7 O0 J# U% s" B# N$ Q6 S
4.4.3 用remove()方法从列表中删除值 69
0 ?) p3 C! `& s( T1 B4.4.4 用sort()方法将列表中的值排序 69
. _" d+ F$ x% V* m$ z ~4.5 例子程序:神奇8球和列表 70& O' N6 E( F& [0 b2 \; J" O: z
4.6 类似列表的类型:字符串和元组 71
( U) ~6 k, |7 s: Y% d! _" J4.6.1 可变和不可变数据类型 72
/ d! h3 ^5 f3 V* O0 V) ?5 c3 r- y# I( c4.6.2 元组数据类型 731 u/ t. r% G) g, F( c
4.6.3 用list()和tuple()函数来转换类型 74
8 ?6 W: d* \9 t# g: [& }4.7 引用 75
3 S4 H, \8 ?' e4.7.1 传递引用 76
* r% E! L7 [3 ~. _6 _4.7.2 copy模块的copy()和deepcopy()函数 77
+ J: ]* N- S/ O. U0 H4.8 小结 78
5 z+ C' j6 A8 U }5 F9 z4.9 习题 789 _& v( H& J1 B! h& P
4.10 实践项目 79, N2 I. ?* z6 ~( D/ }- z0 o
4.10.1 逗号代码 79
/ H6 |, ^5 w7 S1 h5 C5 E4.10.2 字符图网格 79* |* N6 t; s6 b; s, w6 J
第5章 字典和结构化数据 81
1 g! Y4 D P: t5.1 字典数据类型 81' \ X9 ?! X3 [& X
5.1.1 字典与列表 82; W0 d& |) D. U
5.1.2 keys()、values()和items()方法 83. k) _" \5 f/ x" s
5.1.3 检查字典中是否存在键或值 84* A' u3 l4 g/ ^6 a/ L( d9 H% d. u
5.1.4 get()方法 849 S4 P2 ~ W& E3 a; r& Q/ B
5.1.5 setdefault()方法 85. b" t! b( I7 W0 }& H/ e" V: j
5.2 漂亮打印 86# P) m- M0 B- K3 } ^
5.3 使用数据结构对真实世界建模 87
! {2 a, K7 z; R5.3.1 井字棋盘 88
: q# {8 B& n/ _5 B2 Z w5.3.2 嵌套的字典和列表 91# }4 Y$ d* }# q: X+ d; m) G& [, S" |& L
5.4 小结 92: [% L* \* v; A7 x2 b. p
5.5 习题 93
2 n) b5 q ]0 Y/ F9 }5.6 实践项目 93
! o8 S3 Q1 a" F* g( [7 {5.6.1 好玩游戏的物品清单 93
& W3 w& b3 e: Y7 C2 V( D6 E5.6.2 列表到字典的函数,针对好玩游戏物品清单 943 A( l% t6 Q% O1 h# H- E7 Y& \, }
第6章 字符串操作 95
. ?9 _* U! x+ |3 Q$ M9 l6.1 处理字符串 95
' X8 Y8 x! i/ n/ m4 K# _6.1.1 字符串字面量 95
3 R3 @% ]+ _! @. S+ `( Y% q% s- T5 @6.1.2 双引号 96
1 y5 f6 y& Z J u6.1.3 转义字符 96
p* k# F2 N( |7 F9 [9 p3 o6.1.4 原始字符串 96- J( l' _/ M5 _. |
6.1.5 用三重引号的多行字符串 97" b& r0 k' Q) s# P( h- ]$ I
6.1.6 多行注释 975 f- J/ y( V$ [! {" ~- ^, g: E
6.1.7 字符串下标和切片 98
8 Y0 r9 I3 H+ Z; o! I9 v7 p' v6.1.8 字符串的in和notin操作符 98( L9 W5 T( l, K6 p' W( r z
6.2 有用的字符串方法 99
n8 K6 ]0 e! K" H+ S9 y5 p# H6.2.1 字符串方法upper()、lower()、isupper()和islower()99+ p6 k0 N7 r- }# n5 ? m) h; }% u
6.2.2 isX字符串方法 100, ]: }5 }8 e3 U7 T. g& M
6.2.3 字符串方法startswith()和endswith()102
j8 S7 f7 \6 Z. K6.2.4 字符串方法join()和split()1024 ^- l" a5 E: M' I, P- H
6.2.5 用rjust()、ljust()和center()方法对齐文本 103. K% I& B2 @$ w5 U% S( ?% X. V1 Q+ g( A
6.2.6 用strip()、rstrip()和lstrip()删除空白字符 1047 Z e S, f7 i' l8 m
6.2.7 用pyperclip模块拷贝粘贴字符串 105
6 _/ x6 ^: z0 z. f8 i/ C3 l6.3 项目:口令保管箱 106
, k9 G/ q/ m7 {第1步:程序设计和数据结构 106
6 V; \* z* n5 c m6 s& s ^. V第2步:处理命令行参数 1066 I$ u1 M- r& g; r" `* J
第3步:复制正确的口令 107
$ g* d _+ |+ M* L% s" x6.4 项目:在Wiki标记中添加无序列表 108* a/ [8 i& @- S! D" i) O5 _$ n2 Z
第1步:从剪贴板中复制和粘贴 108
" s. H: Z8 u2 R$ a+ A第2步:分离文本中的行,并添加星号 109' W0 b: u: [6 d! k: O% H
第3步:连接修改过的行 109
/ ~- E- H' X# |$ F* ~6.5 小结 110
+ R5 X' h4 d$ h( ?8 C* `9 D: s$ c6.6 习题 110
: M6 S+ G1 k1 {4 _1 N0 k6.7 实践项目 111% U3 a& P* I7 J/ e+ b
表格打印 111
% t4 m% Y# C. }7 W- J* T第二部分 自动化任务
* b, t/ t, H# B. N0 v第7章 模式匹配与正则表达式 115! ^ U7 P) u8 A5 M- c
7.1 不用正则表达式来查找文本模式 116" S# k5 [& w: d( d
7.2 用正则表达式查找文本模式 117# M3 p$ t0 v. W3 V. G2 T* ^
7.2.1 创建正则表达式对象 118+ j6 M4 G! L( y- @; Z
7.2.2 匹配Regex对象 118
) b7 e1 r: [5 ]. F- q# U9 z7.2.3 正则表达式匹配复习 119* M6 V0 }" f7 K% J2 C
7.3 用正则表达式匹配更多模式 119
0 G3 Z& F6 b, {0 Q- I9 m1 ~7.3.1 利用括号分组 119# B8 W2 r: k' f
7.3.2 用管道匹配多个分组 1203 [9 S2 V \$ ~9 f0 f o* S
7.3.3 用问号实现可选匹配 121
8 A3 j6 [3 l& a/ l7 Z0 ?7.3.4 用星号匹配零次或多次 121
" y }, J8 z/ a8 h) M3 s2 z! E8 H7.3.5 用加号匹配一次或多次 122
+ L- H D/ |9 Y' ?0 Z$ a4 Q7.3.6 用花括号匹配特定次数 122
! {+ z! Y. Z. W; Z8 d& S9 x7 E7.4 贪心和非贪心匹配 123, M2 N* X" ?! A0 F9 t A& c
7.5 findall()方法 124
3 v$ W r& }+ Y, r7.6 字符分类 124
+ J1 X$ d( w; f7 d+ ]4 K# K, o7.7 建立自己的字符分类 125; Z6 E( V* B$ V" O5 e& p
7.8 插入字符和美元字符 126
, d3 h! e/ r! `6 I( @' O, u7.9 通配字符 126
& z6 |' U- ~/ k D' m1 a7.9.1 用点—星匹配所有字符 127
1 _) h4 P: ]; e( V& }0 p7.9.2 用句点字符匹配换行 127
7 s7 f" r0 E! T8 l7.10 正则表达式符号复习 1284 K8 g" D( u8 s# j; q! o2 H
7.11 不区分大小写的匹配 128 _, R% i% v7 E5 F4 K6 }
7.12 用sub()方法替换字符串 129- h$ u& r/ G- R9 {2 Y8 Y4 p W) \, `; m, m' B
7.13 管理复杂的正则表达式 129
# c7 k6 u) }3 o0 n+ @7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
8 f) X$ E4 f, ^2 w7 r- i( X7.15 项目:电话号码和Email地址提取程序 130* [8 S% ?9 c. q% @' R
第1步:为电话号码创建一个正则表达式 131
# G* |0 \ I2 u F第2步:为email地址创建一个正则表达式 1326 v8 H: \8 F" {- W3 N4 n8 C
第3步:在剪贴板文本中找到所有匹配 132: a& B, {1 y" r1 h- V7 T
第4步:所有匹配连接成一个字符串,复制到剪贴板 133
# A2 f8 p, I, I$ D第5步:运行程序 133
4 y7 s5 |" l4 z4 I G7 }第6步:类似程序的构想 1349 [+ P: O4 S* p( o
7.16 小结 134
9 L+ f4 O% A @6 E7.17 习题 134
! l! `- T" g4 R* R7.18 实践项目 136# V2 p9 q' R6 q9 j
7.18.1 强口令检测 136/ a; W, w! b9 q
7.18.2 strip()的正则表达式版本 136
% i# T" `( p! M, B, w第8章 读写文件 137
$ j/ Z: w$ @& m8.1 文件与文件路径 1379 K# ^7 X8 V! a# O6 k
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
' ^! n, c: s) y" a1 `% m8.1.2 当前工作目录 139) H6 C3 u' W* p) W5 v
8.1.3 绝对路径与相对路径 139
8 g+ A5 O; J" B) r+ y8 x8.1.4 用os.makedirs()创建新文件夹 140
$ w; `( F- i% U6 P: m8.1.5 os.path模块 1409 M/ y9 \/ @4 _! |: x! C- d% N5 X
8.1.6 处理绝对路径和相对路径 141$ y& u6 h+ u3 ?! \* n: P# t! P
8.1.7 查看文件大小和文件夹内容 142
- C3 q( Q0 q/ _ D; D8.1.8 检查路径有效性 143
( S: v2 f: n Y8 R: E0 [0 N1 m8.2 文件读写过程 1443 B: W% [ l$ N1 I7 ?0 _
8.2.1 用open()函数打开文件 145
$ H8 o3 @- R8 H4 i8.2.2 读取文件内容 145
& r( R! M6 G% H5 W% ?8.2.3 写入文件 146
6 _8 ~' E( E4 n' ]. G+ J8.3 用shelve模块保存变量 1478 d: ^: u' l% P# e( \
8.4 用pprint.pformat()函数保存变量 1488 S* ?: L6 L8 ^' ~9 R5 }
8.5 项目:生成随机的测验试卷文件 149
* e8 s5 j! f O3 J第1步:将测验数据保存在一个字典中 149
0 \% c8 n& i9 Q% k第2步:创建测验文件,并打乱问题的次序 150
8 l$ E6 i9 H1 n第3步:创建答案选项 151
2 F0 M2 B; C+ o& a" Y第4步:将内容写入测验试卷和答案文件 151
1 P: ?1 i* m- }" B0 j. P' T Z# `
3 Y3 H, w7 m) x: j7 q% `' u9 \ |