|
百度网盘:Python编程快速上手让繁琐工作自动化PDF高清完整版免费下载 提取码:mlma
; z# \, L3 z7 t! V- x+ ^" \! o* `6 i! |) n$ h" {4 [0 r( \
内容简介如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 本书是一本面向实践的Python编程实用指南。本书的目的,不仅是介绍Python语言的基础知识,而且还通过项目实践教会读者如何应用这些知识和技能。本书的首部分介绍了基本Python编程概念,第二部分介绍了一些不同的任务,通过编写Python程序,可以让计算机自动完成它们。第二部分的每一章都有一些项目程序,供读者学习。每章的末尾还提供了一些习题和深入的实践项目,帮助读者巩固所学的知识。附录部分提供了所有习题的解答。 本书适合任何想要通过Python学习编程的读者,尤其适合缺乏编程基础的初学者。通过阅读本书,读者将能利用强大的编程语言和工具,并且会体会到Python编程的快乐。 , O# t& |1 j; z$ Z( u' h
7 X3 Z1 M+ f+ }& K, S
7 C6 Z* m+ {3 n9 |
作者简介Al Sweigart 是一名软件开发者,还教小孩和成人编程。他为初学者写了几本Python 书籍,包括《Python 密码学编程》、《Python 游戏编程快速上手》和《Python 和Pygame 游戏开发指南》 目录 第一部分Python编程基础
9 C( B R) G% m7 [! ~第1章 Python基础 3( k$ `: Q7 H7 ?2 Z5 h
1.1 在交互式环境中输入表达式 3
4 L- G3 U9 a9 J1 O1.2 整型、浮点型和字符串数据类型 6 W5 Q6 @: k5 p* u' |( z, o8 \
1.3 字符串连接和复制 6: t' r/ g2 K- J
1.4 在变量中保存值 7" ?7 K: E& ]* ] N$ E4 z
1.4.1 赋值语句 7
. s1 c7 `* q+ [# N, u) x) ~1.4.2 变量名 9
- m. a% a1 A8 U6 Y+ I1.5 第一个程序 9
6 z( y& e, g$ n- U" W9 z1.6 程序剖析 11* z' E" ^! a- G5 t
1.6.1 注释 11
/ U5 K8 h& P* E" V8 b1.6.2 print()函数 11
% s" M9 v) ?8 g; p" B1.6.3 input()函数 11
7 l6 ^* B- L' U$ P- V3 N1.6.4 打印用户的名字 12$ `/ N% Z+ T" C, e9 h! ]
1.6.5 len()函数 12
# a0 w( L' g$ x5 g$ N6 \% w7 _) H1.6.6 str()、int()和float()函数 13
: v) P: o% i" @3 D9 o' j3 N' J# j1.7 小结 152 p; g" l, p0 v/ x% B
1.8 习题 156 V Y2 A1 X6 q+ @' [
第2章 控制流 174 G! p) l: |# a$ q# k# V
2.1 布尔值 18
1 p9 D; q d3 b% }, e0 K' ?8 r2.2 比较操作符 19
0 v/ l2 W5 T' x; j, p% }0 E2 ^" u2.3 布尔操作符 200 X$ ?' l9 T. L6 f" W
2.3.1 二元布尔操作符 20
7 t( b; [- N1 s4 I! l5 ~2.3.2 not操作符 21- t6 o( w, n) R" H. Q+ `. D
2.4 混合布尔和比较操作符 21
/ Z8 c8 [- m/ g( {' n3 F2.5 控制流的元素 22
0 Q6 R- t6 C2 n' D# c2.5.1 条件 22" l0 K6 |, U$ v' p- m4 J& _
2.5.2 代码块 22- T; Q3 m; l; F
2.6 程序执行 23
. H t0 _* o! N j' x6 u& g- h2.7 控制流语句 232 o% G( k3 C: ?2 [7 e7 B
2.7.1 if语句 23
- ]) D/ W% W) ?6 t t3 N# m" y: l2.7.2 else语句 24. q( w4 n+ G( B6 z
2.7.3 elif语句 25& n, `% x! [9 e4 }' g1 T& _8 Y
2.7.4 while循环语句 30, |% i2 H h. ]1 n
2.7.5 恼人的循环 31
9 r v! t1 j% c2.7.6 break语句 33+ o& N- v2 {; n" d' W' G
2.7.7 continue语句 34
2 |7 o9 h+ p' W+ \/ }# O2.7.8 for循环和range()函数 37
& z1 J5 q6 }; r4 C' p1 P* i2.7.9 等价的while循环 39
, q& @2 I5 X. y' Y2.7.10 range()的开始、停止和步长参数 39 d( E N% S7 Q H
2.8 导入模块 40from import语句 41
% `5 `2 g# ~9 V% u9 i2.9 用sys.exit()提前结束程序 41
2 C8 z, u' z$ N w( j2.10 小结 41/ [7 k7 `% Q5 M+ ~# \
2.11 习题 41
& c7 R/ C; Y" e P k第3章 函数 433 y Z8 P+ `) K. K
3.1 def语句和参数 440 d& L( Y+ }7 u2 L
3.2 返回值和return语句 45, e2 f; ]; z& c* b9 T
3.3 None值 46: X* ]+ s+ A7 C. W
3.4 关键字参数和print()47
1 w2 U* |1 @. g- z, ~, [3.5 局部和全局作用域 48
1 Z* \) u6 u- w3.5.1 局部变量不能在全局作用域内使用 48
0 M3 m1 z# d$ X4 W; f3.5.2 局部作用域不能使用其他局部作用域内的变量 49
' Z, R% C) s0 _- Y4 p; \3.5.3 全局变量可以在局部作用域中读取 49# c S" F) U. d
3.5.4 名称相同的局部变量和全局变量 506 b1 `, V/ a7 d9 |1 a3 t
3.6 global语句 50& G+ i! `9 {$ q, v
3.7 异常处理 527 E+ ?+ }% f" o" F
3.8 一个小程序:猜数字 54
* ^. H, Z& u3 d3.9 小结 553 q# K- l& S4 Z+ i6 K3 |
3.10 习题 560 o& `; k7 F( x4 ~* }
3.11 实践项目 56- D) b9 N: K; e/ m) l ]
3.11.1 Collatz序列 56
" `1 ?5 t+ _" }3.11.2 输入验证 57
; j. _" a& p; C" C$ q0 A第4章 列表 59' n' U; y2 G+ k% v
4.1 列表数据类型 59& U0 _$ e8 x W r f' S
4.1.1 用下标取得列表中的单个值 60
6 w7 d: I' `+ F$ s8 F5 ?4.1.2 负数下标 61* z$ u: D& s' A0 {
4.1.3 利用切片取得子列表 61/ d; A, M4 Z: j& ^
4.1.4 用len()取得列表的长度 62
. ?9 B6 @% G" g* J! R4.1.5 用下标改变列表中的值 62
* M; \7 V. [9 ]- K+ J5 o4.1.6 列表连接和列表复制 62
# Z3 ?) B6 ?" \# g5 r4.1.7 用del语句从列表中删除值 633 ]' `7 \+ {+ }+ d- K
4.2 使用列表 63
. v- S( `* }! \1 G5 J4.2.1 列表用于循环 64% u( j5 Z6 A+ p5 @( A0 a
4.2.2 in和notin操作符 65
# d3 F! q$ v' f" u( o7 q9 I0 V4.2.3 多重赋值技巧 66: ?$ e/ n" C. E& k% M. b/ u: ?
4.3 增强的赋值操作 66' o2 |; _& {6 u: f( }5 K! a3 L O9 F
4.4 方法 67. W# e$ X# S- H2 Y+ y. d
4.4.1 用index()方法在列表中查找值 67* C5 I" a& N! q4 \' E9 ?' b, l
4.4.2 用append()和insert()方法在列表中添加值 68
. S$ Y" g3 \5 X- H8 B4.4.3 用remove()方法从列表中删除值 69
; T7 ?8 B# n7 D" X% F4 N6 r4.4.4 用sort()方法将列表中的值排序 69
( R5 _, z% }2 w+ E- {+ f6 ]5 H4.5 例子程序:神奇8球和列表 70( B1 w7 o8 c/ H& i
4.6 类似列表的类型:字符串和元组 71
5 ~5 q0 g' e: }4.6.1 可变和不可变数据类型 72
4 m, D# ]0 m7 X9 H( d4.6.2 元组数据类型 73
' r( t0 a% c/ ~8 @* D9 o$ v) y4.6.3 用list()和tuple()函数来转换类型 74
4 c+ u) k( }. z$ h& E& h4 `4.7 引用 75
5 j' u% }9 T5 |$ s8 K/ }4.7.1 传递引用 76& T0 L' u+ q! d& l
4.7.2 copy模块的copy()和deepcopy()函数 77
: f' ^: O: n! W- n6 H8 c6 O2 ^1 g4.8 小结 78; `9 W* e* |! Y4 U% L8 z
4.9 习题 78/ {1 f5 i6 ^# \* T8 j
4.10 实践项目 79
+ n4 `! o# ]- Z7 i7 Q5 z4.10.1 逗号代码 79
5 s0 N: |# ]. }4 c8 v( v4 y. j4.10.2 字符图网格 79
6 U; c; \( b5 ] c第5章 字典和结构化数据 810 O6 O+ q$ ^5 Z0 ]
5.1 字典数据类型 816 A* {2 F, |3 T
5.1.1 字典与列表 82% w* o2 d N9 Q. e
5.1.2 keys()、values()和items()方法 83
4 x1 o: k! z) K* f* d5.1.3 检查字典中是否存在键或值 84* N$ X1 S' G& j3 {
5.1.4 get()方法 84) t( b8 w" y- ?: } d7 }
5.1.5 setdefault()方法 854 _; y, K% z7 a
5.2 漂亮打印 86
* p: Z% y& O2 h% j H; G5.3 使用数据结构对真实世界建模 87
# \' c! L( }$ ?! g) ~+ c5.3.1 井字棋盘 881 M4 }5 t7 K# k& k |
5.3.2 嵌套的字典和列表 91
' t. E7 j8 C: A3 f1 \1 d# b5.4 小结 922 U* x4 ?$ I( c- A, t
5.5 习题 935 ?) C8 [3 u; b1 g6 }/ s: P6 C
5.6 实践项目 93
0 W6 W7 E9 i s& x: V) L( K5.6.1 好玩游戏的物品清单 933 M5 U e- M) b6 C6 p5 ~0 O
5.6.2 列表到字典的函数,针对好玩游戏物品清单 94
8 T; X8 p5 T; `6 z第6章 字符串操作 95! b5 E/ ?/ t/ J# F
6.1 处理字符串 95) X% @$ O; c$ k9 B
6.1.1 字符串字面量 95
0 x7 D) `( q- m) P- L6.1.2 双引号 96
6 _" ]: q1 x8 j/ f6 B; b6.1.3 转义字符 96; R* R' a0 i: E" ^
6.1.4 原始字符串 96: [8 s D1 i! u
6.1.5 用三重引号的多行字符串 97" M8 t# M% ?7 a' p; ?) f$ d
6.1.6 多行注释 97& }4 H" r, W' y9 z
6.1.7 字符串下标和切片 98
: [, R; @+ X: A6.1.8 字符串的in和notin操作符 98
. \' P+ I; D, T3 U$ i* \6.2 有用的字符串方法 993 ~7 s8 g) m: U; b* h$ a
6.2.1 字符串方法upper()、lower()、isupper()和islower()996 A2 Y+ W# M' d6 r' @- w/ M
6.2.2 isX字符串方法 100( b2 G" r* \4 k B
6.2.3 字符串方法startswith()和endswith()1023 C( q. h! R- @6 @
6.2.4 字符串方法join()和split()102( ~& x7 W* S9 H7 ?
6.2.5 用rjust()、ljust()和center()方法对齐文本 103
' o. n3 g6 {$ u* D. X' t5 j6.2.6 用strip()、rstrip()和lstrip()删除空白字符 104! F; b: B; W" D# x; t. O
6.2.7 用pyperclip模块拷贝粘贴字符串 105
2 I. W7 ?0 W8 ^) b+ I3 Z6.3 项目:口令保管箱 106
7 n; t2 b0 D; B$ O7 w1 b, H) j第1步:程序设计和数据结构 1064 Z# m' R" c, X, J6 n& n# ~
第2步:处理命令行参数 106: G& n* {- X& W" ?+ `0 [
第3步:复制正确的口令 107
8 j, ?1 a; |* t. u5 H6.4 项目:在Wiki标记中添加无序列表 108
+ Y' {: _# S, M* _# z第1步:从剪贴板中复制和粘贴 108. Q" R7 [. o, B: W; i4 x
第2步:分离文本中的行,并添加星号 1092 z1 M2 u3 D* f
第3步:连接修改过的行 109- t r1 q4 ^9 ~
6.5 小结 110- h- ^* g- P7 H
6.6 习题 110
+ H/ o5 o5 A) u8 Z4 M% T6.7 实践项目 1116 v# A% g/ O! b# t
表格打印 111& z1 Z6 F5 T \7 h0 C
第二部分 自动化任务
5 ^/ Q6 P: R+ I. h' U- X第7章 模式匹配与正则表达式 115 j# J7 |; S; j5 r B! f% i# S, V
7.1 不用正则表达式来查找文本模式 116
# U& B& Z0 K, h* ?, i9 @7.2 用正则表达式查找文本模式 117; A; w, s" r3 E) k: {0 Y& Q
7.2.1 创建正则表达式对象 118
/ r f5 s4 \2 Q5 [% [- P7.2.2 匹配Regex对象 118* j2 N7 S) `- S7 X, z
7.2.3 正则表达式匹配复习 119
# r" m' N. O: K9 g6 x7.3 用正则表达式匹配更多模式 119% u+ P, q# p5 R3 o" [
7.3.1 利用括号分组 119
6 A/ B2 R" o; X2 u6 O* @7.3.2 用管道匹配多个分组 120% Y+ V4 H+ K' n J5 L7 Q' N7 q2 ]
7.3.3 用问号实现可选匹配 1214 x0 A+ R7 ~6 O0 v( K% g6 ] u
7.3.4 用星号匹配零次或多次 121
+ r; a# M! {- w* { b/ T7.3.5 用加号匹配一次或多次 122 C& P9 C" [: Z0 I7 f
7.3.6 用花括号匹配特定次数 122
3 H3 P/ n3 f- w- d0 e4 e8 G$ _; ]/ S7.4 贪心和非贪心匹配 1234 Q; B7 C5 X' Z+ V$ p% I
7.5 findall()方法 124 J& r2 F8 F2 T* Y4 |
7.6 字符分类 124* ?3 i9 H1 w7 c8 {; _, x# ?: S: a
7.7 建立自己的字符分类 125
1 E A4 z- k H1 Q" Q7.8 插入字符和美元字符 126* `9 m6 `, a2 t1 L% h
7.9 通配字符 126/ e8 k) L! w0 }! ]) E% X
7.9.1 用点—星匹配所有字符 127
. F2 Y: e$ |8 T( {; v7.9.2 用句点字符匹配换行 127
- h( o8 T+ y* Y. ]7 ~6 P7 g6 G7.10 正则表达式符号复习 128+ x# R" F/ v `
7.11 不区分大小写的匹配 128
# `8 t1 ~: k+ t7.12 用sub()方法替换字符串 1290 |) q% l2 D) k* y3 G
7.13 管理复杂的正则表达式 129
: J7 s/ w1 T+ z1 u3 Z& k7.14 组合使用re.IGNORECASE、re.DOTALL和re.VERBOSE 130" ^3 D7 s; L# S' }1 h
7.15 项目:电话号码和Email地址提取程序 130
+ Q% v1 W4 g) O第1步:为电话号码创建一个正则表达式 131
1 _( ^! d' C* d8 A4 ~第2步:为email地址创建一个正则表达式 132
3 Y* a. M9 i6 f6 j) e$ h第3步:在剪贴板文本中找到所有匹配 1324 q8 l. F" {; e% x$ D' {. E) W2 q0 T
第4步:所有匹配连接成一个字符串,复制到剪贴板 133
4 H5 e7 P% G$ R( p/ a1 A7 G( \第5步:运行程序 133
6 b9 H' |% V) p' P第6步:类似程序的构想 1340 ?+ F6 q& y5 d# Q* b9 D
7.16 小结 134
& _: x. H( C- k( h7.17 习题 1345 \/ d4 r7 z8 u4 M/ |! ?, t$ X: Y3 N
7.18 实践项目 136/ e$ N6 x% A; ]) |/ y% ?' y
7.18.1 强口令检测 136
H+ A3 W" }9 ~7.18.2 strip()的正则表达式版本 136
, R% j6 J2 M+ n7 d# [9 P" i9 b& W+ j3 Q第8章 读写文件 137; [) b5 h: a% F3 e8 V# d, z) @' A
8.1 文件与文件路径 137# A: V! O4 A, x& U: \
8.1.1 Windows上的倒斜杠以及OS X和Linux上的正斜杠 138
; {$ \7 w' U$ ~, @; V, ]8.1.2 当前工作目录 139
3 D9 i8 d/ ?5 D" Y& W3 H8.1.3 绝对路径与相对路径 1390 }& G! c9 ~2 ]8 C$ M! X
8.1.4 用os.makedirs()创建新文件夹 140( Q, l' f" r3 t+ g9 k9 n
8.1.5 os.path模块 140 _* M$ c2 X( ?# h1 u6 Q; |
8.1.6 处理绝对路径和相对路径 141
3 G; ?* H2 a$ B- a7 y8.1.7 查看文件大小和文件夹内容 142* k4 \5 @/ Y1 E' D5 O
8.1.8 检查路径有效性 143/ Q E2 {& R& p* A1 E3 U% [- M) E
8.2 文件读写过程 144( l/ H, ]/ n$ P9 b) ]
8.2.1 用open()函数打开文件 145
4 q6 k4 r! U) E V& d8 R' l8.2.2 读取文件内容 145
; K3 t! i p! z& `7 ~" K* u. a8.2.3 写入文件 146# v) P/ t: c8 A! v- ~
8.3 用shelve模块保存变量 147) A- b8 V, `) s2 _1 r
8.4 用pprint.pformat()函数保存变量 1483 L% H( J% j, u" }. C$ K- S) U- K
8.5 项目:生成随机的测验试卷文件 149+ L" I8 l: g! C) ?2 P5 _$ e5 w
第1步:将测验数据保存在一个字典中 149
$ b1 O# Z7 S: E& r7 ^* m第2步:创建测验文件,并打乱问题的次序 150
3 a8 ^9 O% ~7 ` U6 Q$ |8 j# | t第3步:创建答案选项 151
( ?& l, d6 e( y# n第4步:将内容写入测验试卷和答案文件 151
' N$ Y+ p+ o; l, K1 d8 c
I( }, |; M1 G' x7 k) c+ Y& M9 i |