|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
8 c6 [5 D' N$ T
H: p: F# ]; P内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。
! y5 K. j6 V9 k. b8 O8 _0 \
0 C2 N, a" H1 [2 A' C" g
$ c1 w( N: M) x2 u8 I" [+ o作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础 d" I! d1 w/ {9 }1 n r# O; L/ k
第1章 Python基础 3
# p6 R' _9 X+ A! p. M1.1 在交互式环境中输入表达式 3
; C" _' p, d( Z/ t) b: ^1.2 整型、浮点型和字符串数据类型 6
2 O& z4 Y8 x5 P; Y1.3 字符串连接和复制 6
( d( X) O6 h/ q: B, z. G2 r4 z1.4 在变量中保存值 7
o+ O2 y! d, @" L. g8 D1.4.1 赋值语句 7! s1 p: S0 x1 F1 t3 e
1.4.2 变量名 9
* F6 q7 p$ }! {- r! W$ t! J4 L% f) }1.5 第一个程序 9, O' @- Z! ?1 l# X& Y' y' A1 L' r
1.6 程序剖析 11 b6 s) c. b3 q4 a {; g" z
1.6.1 注释 114 v" L* l9 z. h: s# L
1.6.2 print()函数 11
+ ^5 j) h% W' _; I$ b4 m1.6.3 input()函数 11
( r- I b" h4 J& k( \) M% B1.6.4 打印用户的名字 12
6 s6 Q/ ]4 O' r% v4 w9 F1.6.5 len()函数 12
, F1 c! P( ^& Y I8 d n1.6.6 str()、int()和float()函数 13! _* O6 y% a: s5 |: b
1.7 小结 15
- }# t, W& p# B, C' |3 t1.8 习题 156 z% u, D5 I, i" ~. x
第2章 控制流 17
9 D6 Y' p! t' n7 r# t) I2.1 布尔值 181 c, }1 ?5 Q/ o& i+ k D# j+ S
2.2 比较操作符 19
$ H7 f8 K A( V2 f& e+ y2.3 布尔操作符 20% N3 [9 x' D% _2 B. G% i% A& W
2.3.1 二元布尔操作符 20
/ N, H$ d* e' k+ t& a2.3.2 not操作符 21
2 O5 f$ ^# s" m) v9 \: ~, E2.4 混合布尔和比较操作符 212 a: `: g$ J% R
2.5 控制流的元素 22. E, w3 V$ [1 P! W i' {# E
2.5.1 条件 227 A* p+ o% j0 ^/ G" H8 y
2.5.2 代码块 22
5 c9 Q2 n3 h) E0 I% L- P2.6 程序执行 23
8 v$ Q* C, X+ [/ n2 u2.7 控制流语句 23* X' f( Z2 x) P6 f, u
2.7.1 if语句 23
- c( Q& Y1 _# B1 U9 H$ X/ J3 i2.7.2 else语句 24; D/ j4 u' i5 A5 m0 b# p- V
2.7.3 elif语句 25
9 q* e# _9 q& f# a2 U4 x; L# C2.7.4 while循环语句 30: w0 _9 a# \6 I* G/ ~$ k
2.7.5 恼人的循环 315 a. [8 Y- k! m) g: F" N3 r9 M
2.7.6 break语句 33
5 Z8 v8 t8 L6 Q5 ^3 _, \2.7.7 continue语句 34
, `' G! s3 A6 `" i6 H% }2.7.8 for循环和range()函数 37, |8 K1 D( G& }# @2 [
2.7.9 等价的while循环 39# `& F. |. F1 q }, ^ F
2.7.10 range()的开始、停止和步长参数 396 `- E1 u6 u1 j1 C
2.8 导入模块 40from import语句 41
+ L( q" {2 z+ B8 [* A( |( q4 U2.9 用sys.exit()提前结束程序 41# f8 o) H4 f1 i' t! x
2.10 小结 41# \2 k) F& p$ ?5 T# d, z
2.11 习题 41$ }5 S- v1 C% E+ }7 [" b$ Q
第3章 函数 43 V4 b( T: B. r. B
3.1 def语句和参数 44
0 W+ O; M, }* @4 ~) z. i( U: a1 ?, [3.2 返回值和return语句 45
3 H& ^" `( m# W+ V* Q Z3.3 None值 46, C8 W+ A5 f1 s8 b3 t4 q+ Q
3.4 关键字参数和print()47: h! i( j) B0 J9 x
3.5 局部和全局作用域 48
9 |! A) Z* l- b6 U2 j3.5.1 局部变量不能在全局作用域内使用 489 `6 | ~5 U' G+ z
3.5.2 局部作用域不能使用其他局部作用域内的变量 492 @# S) y( C) i
3.5.3 全局变量可以在局部作用域中读取 49
2 x& m7 [0 F4 H. p& G3.5.4 名称相同的局部变量和全局变量 503 c/ j: G( L7 F b* W
3.6 global语句 50
" J$ I% x0 N9 _# B3.7 异常处理 52
% a, |0 v* m1 s/ i. F3.8 一个小程序:猜数字 54% a; |% M& Y& k, D7 i) r1 W7 M1 l
3.9 小结 55
{8 F* t' [7 ?3 J3 T3.10 习题 56, U6 D3 J+ ^6 R' v# C* r
3.11 实践项目 56! L- {' W4 }3 ?
3.11.1 Collatz序列 56
. k2 ]) {( J- u* v6 k7 K7 h/ }; r" h3.11.2 输入验证 57' o2 O$ I* n% ]/ x, V' c
第4章 列表 59
3 `/ j" N: g* ^2 s8 M3 ^4.1 列表数据类型 59
3 p7 d2 e \+ `4.1.1 用下标取得列表中的单个值 60
# Z Z5 j5 i t f1 I, C7 n4.1.2 负数下标 61# q4 U4 e5 ~7 B4 c2 b
4.1.3 利用切片取得子列表 61
: X5 x8 J" V! w% f+ M; F4.1.4 用len()取得列表的长度 62, Y; J/ U; ^" E
4.1.5 用下标改变列表中的值 62
2 {" V9 O$ d! V' n1 p, q. z4.1.6 列表连接和列表复制 62, a4 M$ l2 ?7 y7 v* c
4.1.7 用del语句从列表中删除值 63
6 e* i* C4 A; \4.2 使用列表 63: r( c% `" q2 h
4.2.1 列表用于循环 64
4 J; I W$ I6 ?; M( ]4.2.2 in和notin操作符 65. v' W8 {; V6 _$ e$ C. I
4.2.3 多重赋值技巧 662 O: a c L. n4 Z" p
4.3 增强的赋值操作 66
# P) e s6 i' m! q7 n4.4 方法 67' k4 F0 ]$ V2 G' Z; _7 k
4.4.1 用index()方法在列表中查找值 67- c. K: x3 M; O6 v3 C- k
4.4.2 用append()和insert()方法在列表中添加值 688 R7 U8 F5 x, X( r& j2 M
4.4.3 用remove()方法从列表中删除值 69
, @5 N. f# H& m d( P; u4.4.4 用sort()方法将列表中的值排序 69
* f" X; r. D C6 [( U4.5 例子程序:神奇8球和列表 70 j9 Q- r6 m7 S
4.6 类似列表的类型:字符串和元组 71, f8 e4 v! o6 |4 _& A
4.6.1 可变和不可变数据类型 72! m' _3 s5 F3 n( m6 O1 F
4.6.2 元组数据类型 73 F& ^- |& B3 E: [' y2 G
4.6.3 用list()和tuple()函数来转换类型 74
) P! h' M2 h' A9 ~4.7 引用 75
( T9 O$ i. E! H* U( u- u4.7.1 传递引用 768 p0 ]. ], v, j( E& g
4.7.2 copy模块的copy()和deepcopy()函数 77! W& Z2 D* P6 B; |0 m. P
4.8 小结 78
9 ]; Z t8 q1 r3 z4.9 习题 78
C) F' p8 |; |4 r7 c1 i4.10 实践项目 79
( t/ m0 [6 n- `" X" x& C4.10.1 逗号代码 79
$ f; p2 b7 C7 j+ t" g4.10.2 字符图网格 79: ]# I# D2 |+ h# b c- _0 W
第5章 字典和结构化数据 813 E' d) ?0 W4 O
5.1 字典数据类型 81# t2 c( e( `7 }3 F- O) C% v
5.1.1 字典与列表 82; N5 ^6 B; K. e5 O" a) s, L' e
5.1.2 keys()、values()和items()方法 83+ b" v9 {* Y! G3 j
5.1.3 检查字典中是否存在键或值 84* k: K$ B0 A+ g* `
5.1.4 get()方法 84
$ n9 W( V" x- v/ C* G# @3 r( [% @# y5.1.5 setdefault()方法 85
% W2 A4 I2 y9 L5.2 漂亮打印 86) N+ F& a8 n& Z+ J4 X: [6 }
5.3 使用数据结构对真实世界建模 87
5 ~- g" W' S: O; O v5.3.1 井字棋盘 88
9 j P; }2 N5 Y* e" y3 b5.3.2 嵌套的字典和列表 911 s n6 a+ @3 c' `) Z. f8 s: p
5.4 小结 92! z" M- j; y8 c/ x( t2 G
5.5 习题 93
+ B! m w" N" S% U ]8 Y# N7 T5.6 实践项目 93/ _ o! o4 `" |& w: c; Y. d: l, S
5.6.1 好玩游戏的物品清单 93
% E+ U; G& D0 m0 O# z5.6.2 列表到字典的函数,针对好玩游戏物品清单 94) ^* ?' i% {( w1 r2 `% U
第6章 字符串操作 95
: U& a+ v. F5 q0 E6.1 处理字符串 95. F5 M b2 d* \$ C4 n/ e3 V) t
6.1.1 字符串字面量 95: a2 j& U7 b# K
6.1.2 双引号 96
% [* |/ q L% p2 [2 N' v* J+ z6.1.3 转义字符 96
" q7 ?! t3 r3 k( ?/ W6.1.4 原始字符串 96
8 x- L( w% _+ }: p3 W0 n6.1.5 用三重引号的多行字符串 974 z; P1 `0 b! O
6.1.6 多行注释 97$ f! L# k g9 D" b$ V- a% S% J# I
6.1.7 字符串下标和切片 986 t% G1 Q8 u* v7 y
6.1.8 字符串的in和notin操作符 98
8 r( i+ j9 E, D6 S6.2 有用的字符串方法 99
, m* h- x P! N# a& J6.2.1 字符串方法upper()、lower()、isupper()和islower()99/ u4 m0 n3 X/ R, [& J8 I- t
6.2.2 isX字符串方法 1006 [4 p. @. u6 r1 @4 Z
6.2.3 字符串方法startswith()和endswith()102, b9 J' c0 G/ j+ Y2 E; C' N
6.2.4 字符串方法join()和split()102
7 }7 M2 O, l5 ? w T* ~. U% u6.2.5 用rjust()、ljust()和center()方法对齐文本 103
( }9 U9 S: t! [/ W0 D# T* u6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104& T6 |, m! A4 _& {, r) ]; E% x- ~
6.2.7 用pyperclip模块拷贝粘贴字符串 105" A4 s9 M5 U8 J, v3 K G
6.3 项目:口令保管箱 106# [9 y) ~. z: {$ O7 ?
第1步:程序设计和数据结构 106
8 V) p' _3 T0 c6 X# ?4 |. g% e& E第2步:处理命令行参数 106" a9 z9 S+ Q. |
第3步:复制正确的口令 107+ I D2 z$ P2 J- \3 W f, ?8 ]1 P
6.4 项目:在Wiki标记中添加无序列表 108
]- Y f) p' i第1步:从剪贴板中复制和粘贴 108
# A2 Z9 N: O! M9 {第2步:分离文本中的行,并添加星号 109. I' @2 H6 H8 W' c$ z
第3步:连接修改过的行 109
0 R5 @& A4 p, Q* q* m6.5 小结 110
/ v' A/ C. e! ?2 }2 M6 n6.6 习题 110$ M4 ~7 f7 P f) n" y
6.7 实践项目 1115 v2 f! V+ J) K4 L. |& q! t
表格打印 111# o; ^+ M8 X7 p# ?
第二部分 自动化任务: C2 u- Y! L: q- P
第7章 模式匹配与正则表达式 115
" p0 Q1 Y( x0 K: V0 u% w! S7 Z: L0 `0 o7.1 不用正则表达式来查找文本模式 116" F, M1 ]- d- E
7.2 用正则表达式查找文本模式 117
0 ^( ^: n7 H( p2 z5 g7.2.1 创建正则表达式对象 118& y: j, e- B! b8 c0 y# M/ C
7.2.2 匹配Regex对象 118; E* ~" Q, `1 Z
7.2.3 正则表达式匹配复习 119
; t6 E f2 g H' R( e( C7.3 用正则表达式匹配更多模式 1196 w9 S7 x+ Z1 T% n9 o; `9 j- `
7.3.1 利用括号分组 119$ k. `: P, P1 F, m! } S
7.3.2 用管道匹配多个分组 120
7 N7 N( Z) U$ v% ^, _# M7.3.3 用问号实现可选匹配 121
8 M# Y+ f0 _2 g7 o, r7.3.4 用星号匹配零次或多次 121
; E) P- V9 Y7 p0 \) z0 Y4 I7.3.5 用加号匹配一次或多次 122
2 P5 b( I+ z( I8 E7.3.6 用花括号匹配特定次数 122
5 f$ x0 v# Q# ~, D+ K7.4 贪心和非贪心匹配 123
+ _% S# _* q. L! @2 {8 ~' i7.5 findall()方法 124
" g# T* T( K& [8 o' t' p& J9 D7.6 字符分类 124
1 e/ {# J5 e. P5 I7.7 建立自己的字符分类 125! j8 P, H/ P5 ?& N/ |1 l
7.8 插入字符和美元字符 126
. @9 v0 r& {& ~" z/ f7.9 通配字符 126
2 j6 @# A0 a, {- T/ v' ^. U7.9.1 用点—星匹配所有字符 127
% V& a6 K* Y" ?6 Z- [7 J( {7.9.2 用句点字符匹配换行 127
D; ^7 H# v3 h7.10 正则表达式符号复习 128
+ w" T! ?! [/ M7.11 不区分大小写的匹配 128
8 H" ~9 g. }; Q3 H0 o7.12 用sub()方法替换字符串 129
8 Q4 p9 z) T! C5 `7 a8 v5 N- s7.13 管理复杂的正则表达式 1296 [9 y4 M+ J. `# Y3 M
7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130
/ r7 C) ?1 V6 v9 T F7.15 项目:电话号码和Email地址提取程序 130
6 x1 s" Q; F5 {9 `第1步:为电话号码创建一个正则表达式 131
( `. p3 {" j3 v第2步:为email地址创建一个正则表达式 132# u4 V) {& ?4 u7 h+ g
第3步:在剪贴板文本中找到所有匹配 132: P$ r$ {5 {- \
第4步:所有匹配连接成一个字符串,复制到剪贴板 1339 V9 u$ X2 S! o
第5步:运行程序 133$ Y1 B2 d% f/ H( J9 g
第6步:类似程序的构想 134
1 s( g, N7 j6 R% i4 u1 ~( V7.16 小结 134
4 `" D7 {% M* l7.17 习题 134' T! v, F# p/ T6 e9 F' E6 x
7.18 实践项目 136
9 S. O8 q6 l+ r- [7.18.1 强口令检测 136
) B% }# I8 V4 Q5 n- L7.18.2 strip()的正则表达式版本 136, j3 n1 Q4 o: {) n3 E
第8章 读写文件 137
! j6 a. v, y6 ~8 S& q" O8.1 文件与文件路径 137
U, {% `& t' F: Q- w8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
2 ]1 W! ]& Q3 w' `. |" p' b4 G7 i8.1.2 当前工作目录 139: S, `) Y/ E) W& E/ H/ w8 l0 {& T
8.1.3 绝对路径与相对路径 139
# d! Q2 o) D) W2 s8.1.4 用os.makedirs()创建新文件夹 140
/ _+ o2 g# H4 ]6 B( h8.1.5 os.path模块 140' R$ ^; @ r- y) _+ p2 i: l
8.1.6 处理绝对路径和相对路径 141
+ N4 `: }" F3 o2 D! e+ M: o8.1.7 查看文件大小和文件夹内容 142
; g8 h0 d2 e/ a* z1 G. F, ~8.1.8 检查路径有效性 143+ q; q0 p1 n1 U$ j( G
8.2 文件读写过程 144* ?. Y0 x: `: f7 r: n6 o
8.2.1 用open()函数打开文件 145
! i5 C9 i* C5 _; J) @3 i8.2.2 读取文件内容 145
$ ~* B/ Y1 _% \/ L, [3 K8.2.3 写入文件 146
# P& ]7 K# c& U; \ I- t3 d( D8.3 用shelve模块保存变量 147
# R7 X& f% F5 J* N5 M8.4 用pprint.pformat()函数保存变量 1481 n% D) l0 m! P( d% z8 C
8.5 项目:生成随机的测验试卷文件 149# A( ]) }6 U: G1 x8 Y4 w
第1步:将测验数据保存在一个字典中 1491 D3 }1 N- O6 @* {* Z% w
第2步:创建测验文件,并打乱问题的次序 150
# x: K9 P2 O4 ^% C+ ~第3步:创建答案选项 151
' r* J( [' J1 y Q, i第4步:将内容写入测验试卷和答案文件 1511 l$ \ W9 d' U, Q) r
( c. r; f. F7 `8 Z q8 [! Q7 h |