|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
. a \" B+ p: f' x
6 J9 H8 J* {& v% n内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 g7 p6 b: E+ i2 q+ `. W
- d* y! k. S/ ?: O+ f5 Q w! I K$ u6 V: m7 t+ p! h
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
+ m: w* ?6 {7 T3 O5 F' ^第1章 Python基础 3
9 Z- W7 ^. W0 a! u( g; V1.1 在交互式环境中输入表达式 3
- O6 \: F$ C' H4 m1.2 整型、浮点型和字符串数据类型 6
4 j7 e& r: U1 ^9 ]6 S( G7 X3 ?1.3 字符串连接和复制 6
3 o1 @% l: J8 d" J1.4 在变量中保存值 79 A: \5 g- N( z& N q/ m* z
1.4.1 赋值语句 7& J _+ b% G- A! @4 x. h, o" \/ N
1.4.2 变量名 95 o8 n. E8 ~# w5 h: p6 Y. @+ q
1.5 第一个程序 9
. j) F) |* L& r; v: l5 j1.6 程序剖析 11
x3 V4 [) B8 ^4 R1.6.1 注释 11
7 t1 A& l& d4 e0 q6 ~1.6.2 print()函数 11
- \1 s, b/ {/ a1.6.3 input()函数 11
1 y+ `0 ?/ M8 R0 [/ k6 ?2 J1 {1.6.4 打印用户的名字 124 s* w( w7 H3 p6 O
1.6.5 len()函数 12$ V' a% ^( ^& a3 } [
1.6.6 str()、int()和float()函数 13# F! u6 a' G+ }4 j x$ ]
1.7 小结 15
/ s8 e4 r' y. U5 a$ s1.8 习题 15
2 P( B! V" D6 X7 N/ V3 o8 E第2章 控制流 17
/ r3 H5 R2 `1 w9 K2.1 布尔值 18+ ]1 ]+ p1 C$ M7 t9 v
2.2 比较操作符 19* M0 e( _# j, z. M+ E2 Q0 `& u
2.3 布尔操作符 20
( [; F5 X( y% w$ n+ n2.3.1 二元布尔操作符 20
4 X2 i5 _" N9 \2.3.2 not操作符 21" Q3 S/ d; C" V$ [2 [0 t
2.4 混合布尔和比较操作符 21+ R0 l/ k0 x; a+ Y
2.5 控制流的元素 229 g0 w: L' ~, ?5 T/ i
2.5.1 条件 22& b1 m; T3 q7 d) ]
2.5.2 代码块 22
/ z0 D9 M3 i/ {1 n) G7 l2.6 程序执行 23
8 f: L$ K0 I/ q( H/ t/ d2.7 控制流语句 23
3 T5 N1 q' q4 m, D" {2.7.1 if语句 237 S# a$ v2 ^4 ~1 B' _
2.7.2 else语句 24% |3 q$ r8 l# Y
2.7.3 elif语句 25
/ x5 J! P: P, r6 n3 H* e2.7.4 while循环语句 301 }) g+ B. O/ d. W( P' k
2.7.5 恼人的循环 31
+ G+ u( L. j. m2.7.6 break语句 335 X* ~* K2 S$ U. }3 Y. M" H
2.7.7 continue语句 34* j5 D' x% e) s! S; @5 m: H
2.7.8 for循环和range()函数 37
, [4 Y9 V+ N( k( z) t& B, M4 ]2.7.9 等价的while循环 393 G2 ^ d/ m- y% H% M- O$ G1 P4 p
2.7.10 range()的开始、停止和步长参数 390 l, P3 D" D/ F8 e8 Y7 f7 c9 g9 g
2.8 导入模块 40from import语句 417 C9 Z8 \' P" w( i6 Z s7 o
2.9 用sys.exit()提前结束程序 41: P! P" t. t( U7 w8 T
2.10 小结 418 t6 V2 K" r5 }1 J' L
2.11 习题 419 [3 q, X& u; g$ ^# X
第3章 函数 43
5 M) p5 |% H% a! d8 C; m3.1 def语句和参数 44
4 P6 n. a8 M' \! I" i- t; J3.2 返回值和return语句 45
2 t" |0 m$ B, O2 K; _& u3.3 None值 461 z: _6 }# R# r2 f' f+ P% s8 L
3.4 关键字参数和print()47
, o) z3 P+ M) x: d& A; V! ?3.5 局部和全局作用域 48, q0 {. a# q5 E* W3 Q
3.5.1 局部变量不能在全局作用域内使用 482 S% d4 |- k( {4 S
3.5.2 局部作用域不能使用其他局部作用域内的变量 49
# l8 D3 \; I- p1 N% S, D" x3.5.3 全局变量可以在局部作用域中读取 49
- \# b3 U. _* [/ l0 t% T2 I3.5.4 名称相同的局部变量和全局变量 50
2 h9 W9 r" r; V5 m& Q, `3.6 global语句 50, k% k1 a/ u. B. Z0 e/ r" U- g8 P
3.7 异常处理 52! x8 U3 c, {& j/ A" R/ k8 l( B
3.8 一个小程序:猜数字 547 F$ e- ?% q8 F! h1 J; t# K
3.9 小结 55" t) K$ c) j8 V% }
3.10 习题 561 \, [+ m9 D/ Q% K- n
3.11 实践项目 56/ ?( u* M. S! r1 G3 b8 k
3.11.1 Collatz序列 56
4 Q, [9 o. F! b; ] ]# _3.11.2 输入验证 57
6 x1 H0 `$ K# l; y3 M! H第4章 列表 59
, x5 p2 o8 c# P, A* F4.1 列表数据类型 599 K4 a+ `9 j* G5 e# I
4.1.1 用下标取得列表中的单个值 60
0 O: a& p: }5 Y( Z) h4.1.2 负数下标 61 |) p5 V+ j; F% M. J
4.1.3 利用切片取得子列表 613 R, P+ v0 G9 r. _$ r0 v1 y/ P. P
4.1.4 用len()取得列表的长度 62
8 j; S L2 j/ x0 p2 M& g4.1.5 用下标改变列表中的值 62) f" P# N, H5 ]$ @% ~
4.1.6 列表连接和列表复制 62
! [* G6 r6 ^. b0 t# Y" `4.1.7 用del语句从列表中删除值 630 Q$ Y: T# V7 _. K( j
4.2 使用列表 63% g0 K/ S8 R2 T5 @) _' a* z9 L
4.2.1 列表用于循环 64
. C8 w, H# U w' r0 z4.2.2 in和notin操作符 65( S7 v- ^5 r4 R# s! r* s; C- v
4.2.3 多重赋值技巧 66& [3 q0 p/ e \
4.3 增强的赋值操作 66
5 \/ Z# t# b2 B- H. q4.4 方法 67! J1 g# v6 m, v( q- l- \) {
4.4.1 用index()方法在列表中查找值 677 F" z* s) L* N
4.4.2 用append()和insert()方法在列表中添加值 68
$ k0 P0 d0 z: _# s8 M4.4.3 用remove()方法从列表中删除值 699 R( S% D6 Z: r# i( ^) O( [/ H6 N
4.4.4 用sort()方法将列表中的值排序 69( ]4 F2 ~# ?9 z7 q! \1 A$ | }
4.5 例子程序:神奇8球和列表 70. Z" J' A" p; b0 [! W
4.6 类似列表的类型:字符串和元组 71" H5 M1 u$ W% s3 O1 ~. W/ u, z! Z
4.6.1 可变和不可变数据类型 72
- i! H$ I# B; ~3 ?( @4 w% b4.6.2 元组数据类型 73! t/ e2 B* z; Z9 S8 U9 v
4.6.3 用list()和tuple()函数来转换类型 74; n. `5 ^$ U8 i7 c
4.7 引用 75
" z1 `: Z1 c& X5 B; Y4.7.1 传递引用 76
, R9 x- b! ^8 O. K$ s# U4.7.2 copy模块的copy()和deepcopy()函数 77
1 P# C2 t* G: u q4.8 小结 78
3 A- A9 i& o4 _4.9 习题 789 x1 c" M8 c8 A/ Q4 M( I5 s! a+ o
4.10 实践项目 79
' [# ~1 h7 I" c0 t- |9 v: G7 ~4.10.1 逗号代码 79# B, g: B) u3 t1 ^) `7 @, G2 {
4.10.2 字符图网格 79% d z0 J8 W8 J1 R+ Y/ y
第5章 字典和结构化数据 816 E0 E7 a0 H/ X
5.1 字典数据类型 81) G }! `0 w( I* E+ v7 }
5.1.1 字典与列表 829 W, R9 U, I5 N& ^ ]6 f& l6 H
5.1.2 keys()、values()和items()方法 83# f( C! F7 {3 ]
5.1.3 检查字典中是否存在键或值 84
: `1 X0 ^( ~; g7 _5.1.4 get()方法 84" @# o" f# u& {) g+ n2 W2 \
5.1.5 setdefault()方法 85
% c$ O8 X* W( b7 Q$ T5.2 漂亮打印 86( d- U. d1 K3 P1 t
5.3 使用数据结构对真实世界建模 87
; ?9 r. ^; H; X$ K, T5.3.1 井字棋盘 88
, V- c+ ~; H, t% n, y3 T6 `5.3.2 嵌套的字典和列表 91
9 P0 `1 ]; R. ^; A5 I5.4 小结 92
! a' C1 I7 a: o+ P7 Q5.5 习题 930 @5 d! Y/ O! b
5.6 实践项目 93% Z# S _+ y$ D3 q
5.6.1 好玩游戏的物品清单 93
& g. V4 I% q, J1 _+ x9 p/ t5.6.2 列表到字典的函数,针对好玩游戏物品清单 94; c4 S) H/ v5 `( |* }0 f8 _6 f+ W
第6章 字符串操作 955 L. G& h, s7 `
6.1 处理字符串 95- k: V: G8 `+ {8 a6 k) w
6.1.1 字符串字面量 95; k# W( q( Y) h8 ?" `2 h6 k
6.1.2 双引号 96
& L% f; H: ], u+ p1 Y6.1.3 转义字符 964 D7 B; x7 g* K# }9 F3 _, }
6.1.4 原始字符串 96, r1 x, N# S3 M+ z+ N
6.1.5 用三重引号的多行字符串 97
6 c( P1 A' I' ~3 K8 J6 E$ d6.1.6 多行注释 97) u8 T7 O7 ~& }: Q2 L% K/ ~
6.1.7 字符串下标和切片 98
) s' t5 d3 `7 V7 C: P$ L- P6.1.8 字符串的in和notin操作符 98
: J1 P( a; J5 w5 i# n3 U, j' X6.2 有用的字符串方法 992 g" l& z9 B8 g& }% W- D5 G% j
6.2.1 字符串方法upper()、lower()、isupper()和islower()99 h1 N; {! A: h- I5 `
6.2.2 isX字符串方法 1000 G" h+ R( D& U# L7 `# ^
6.2.3 字符串方法startswith()和endswith()102
$ [, k0 ^2 y+ w9 [9 R' ~6.2.4 字符串方法join()和split()102. @$ J6 T: D: k% e. Z8 A
6.2.5 用rjust()、ljust()和center()方法对齐文本 103
* W& u" c S- X) y x6.2.6 用strip()、rstrip()和lstrip()删除空白字符 1044 S% V* L: w) I$ b
6.2.7 用pyperclip模块拷贝粘贴字符串 105
7 S: i$ f6 {, y+ e6.3 项目:口令保管箱 1065 W8 B+ a+ S: T
第1步:程序设计和数据结构 106
* m/ M0 Z. t) u3 @6 u! G* V) R第2步:处理命令行参数 106
2 x& b) y+ M1 m% d+ t" {* c$ k第3步:复制正确的口令 107, P: S2 |5 m: V1 R) W2 d
6.4 项目:在Wiki标记中添加无序列表 108! M7 a7 m+ A4 R J! M
第1步:从剪贴板中复制和粘贴 108
* X, R% T. Q5 J" {5 [ Q6 Y第2步:分离文本中的行,并添加星号 109( X: D1 Y s! {) [9 l" J) u7 I
第3步:连接修改过的行 1093 d% g* z. q+ ^! B5 v
6.5 小结 110
! R4 E# A1 o2 k- _, r6.6 习题 110
/ s1 c, [9 V! Q& \ N2 o; B# E6.7 实践项目 111% @+ W. K' _; D, W! E) K
表格打印 111" H0 p4 s' H9 c0 X0 j: _
第二部分 自动化任务8 _( o9 x0 R/ S3 F$ Z
第7章 模式匹配与正则表达式 115
3 B; J! V7 d! ^7 l7.1 不用正则表达式来查找文本模式 116) D4 S* Q- ~* p
7.2 用正则表达式查找文本模式 117' i# r8 w4 ]0 h$ d: d- M
7.2.1 创建正则表达式对象 118
7 v# d# R3 j4 A$ b" @2 T' V& i7.2.2 匹配Regex对象 118 U! n0 h% q' [7 ]
7.2.3 正则表达式匹配复习 119. o3 R0 g+ K$ {( M" |
7.3 用正则表达式匹配更多模式 119
( O! X0 C, M) A6 w& R9 W) ?7.3.1 利用括号分组 119: A9 ] M! B* u+ j
7.3.2 用管道匹配多个分组 120
+ o: G8 ^6 _( u( v" N* k3 o7.3.3 用问号实现可选匹配 121
' S. {5 M2 }: o A- o7.3.4 用星号匹配零次或多次 121
& ]9 N: i. B& i2 _7.3.5 用加号匹配一次或多次 122
: f7 b' W! ]% P, N* w7.3.6 用花括号匹配特定次数 122
( j9 t6 I m& i. p. @8 E7.4 贪心和非贪心匹配 123
( T! X' T2 X1 w8 t u7.5 findall()方法 124- X3 s' X" P' l" a' x6 r
7.6 字符分类 124% J6 ~1 P3 E, H- X) i! W( k
7.7 建立自己的字符分类 125+ \ E! r* D+ A' b: E+ i
7.8 插入字符和美元字符 1262 \1 R# }2 e, b1 {. C
7.9 通配字符 126
9 ]/ J4 v" [ Q7.9.1 用点—星匹配所有字符 127
' |) S% @) k3 ?0 m l" `7.9.2 用句点字符匹配换行 127
1 i5 d' ~6 y% t7.10 正则表达式符号复习 128
1 b8 a! ^: a! K" J: l1 ]7.11 不区分大小写的匹配 128
2 X* w2 |: i* Z" Q7.12 用sub()方法替换字符串 129
: R3 Q0 h, N7 l: ^' N- l# q; x$ L7.13 管理复杂的正则表达式 129
8 a. z# \6 ]. {& A7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
s4 j" R) H+ Y7.15 项目:电话号码和Email地址提取程序 130
: @1 R: ~- l. V* @) U第1步:为电话号码创建一个正则表达式 1317 [4 O8 J0 @5 x; N* {- @4 Y
第2步:为email地址创建一个正则表达式 132
8 h* z4 ^* j9 R2 y- Z第3步:在剪贴板文本中找到所有匹配 1324 J9 x. H; [: v4 E
第4步:所有匹配连接成一个字符串,复制到剪贴板 133
0 D3 ?: S: Y% ~. j9 O4 {第5步:运行程序 1338 H3 Y) q& @/ O' `* |- O( e
第6步:类似程序的构想 1345 O; |1 p3 ?8 S
7.16 小结 134
* D' o" O7 \, A7.17 习题 134
- D7 e) w" |$ d, x7 Y, e! F/ M7.18 实践项目 136/ v1 l9 h( |2 ^) r9 g
7.18.1 强口令检测 136$ c4 O' `- q3 r( P% P0 o/ |! r+ L4 S
7.18.2 strip()的正则表达式版本 136
+ x' {. y3 ^, M2 S" W- M第8章 读写文件 137
2 c& c* f% X& m8.1 文件与文件路径 137
( r5 H+ Y5 }( W8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
! h: |0 }7 y P& p5 t8.1.2 当前工作目录 139
7 ^% m# t' `( L8.1.3 绝对路径与相对路径 139' F: g3 k* c% O9 Z, I
8.1.4 用os.makedirs()创建新文件夹 1401 _% q2 I. t5 g6 y9 D) A
8.1.5 os.path模块 140 t( M- p+ c5 S0 ~
8.1.6 处理绝对路径和相对路径 1417 l5 p H& b* y
8.1.7 查看文件大小和文件夹内容 142. G0 v, a8 [3 V1 x/ ~- V8 P8 M
8.1.8 检查路径有效性 143 I" w5 u" r. I: f" O
8.2 文件读写过程 144
. S1 G" J1 A( z% e, K8.2.1 用open()函数打开文件 145
6 _7 ?# w) r p- C8.2.2 读取文件内容 145
) F2 L5 Z7 W# ^8.2.3 写入文件 146
8 v! m. G8 w8 X, Z9 b& e8.3 用shelve模块保存变量 147' E6 p" H# I' u; a( T
8.4 用pprint.pformat()函数保存变量 148& r# `( @$ k; W: ^
8.5 项目:生成随机的测验试卷文件 1493 Y" \0 M, A& c1 ^; X
第1步:将测验数据保存在一个字典中 149
7 v7 W5 f; [6 w6 w: Z. b W% z第2步:创建测验文件,并打乱问题的次序 150
9 f3 Q3 Y. d; B第3步:创建答案选项 151
. x6 m' y- o. J2 q7 q( m2 s# x第4步:将内容写入测验试卷和答案文件 151 D! [6 S- |+ |4 F% j
7 e5 L/ V6 |8 i) H
|