资源说明:Contents
Preface vii
1 The way of the program 1
1.1 The Python programming language . . . . . . . . . . . . . . . . . . 1
1.2 What is a program? . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 What is debugging? . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.4 Formal and natural languages . . . . . . . . . . . . . . . . . . . . . 5
1.5 The first program . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.6 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.7 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.8 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 Variables, expressions and statements 11
2.1 Values and types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Variable names and keywords . . . . . . . . . . . . . . . . . . . . . 13
2.4 Statements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5 Operators and operands . . . . . . . . . . . . . . . . . . . . . . . . 14
2.6 Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.7 Order of operations . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.8 String operations . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
xiv Contents
2.9 Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.10 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.12 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3 Functions 21
3.1 Function calls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.2 Type conversion functions . . . . . . . . . . . . . . . . . . . . . . 22
3.3 Math functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.5 Adding new functions . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.6 Definitions and uses . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.7 Flow of execution . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.8 Parameters and arguments . . . . . . . . . . . . . . . . . . . . . . 26
3.9 Variables and parameters are local . . . . . . . . . . . . . . . . . . 28
3.10 Stack diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.11 Fruitful functions and void functions . . . . . . . . . . . . . . . . . 29
3.12 Why functions? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.13 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.14 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.15 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4 Case study: interface design 35
4.1 TurtleWorld . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.2 Simple repetition . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Encapsulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4.5 Generalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.6 Interface design . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Contents xv
4.7 Refactoring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.8 A development plan . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.9 docstring . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5 Conditionals and recursion 45
5.1 Modulus operator . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.2 Boolean expressions . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 Logical operators . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4 Conditional execution . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.5 Alternative execution . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.6 Chained conditionals . . . . . . . . . . . . . . . . . . . . . . . . . 47
5.7 Nested conditionals . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.8 Recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.9 Stack diagrams for recursive functions . . . . . . . . . . . . . . . . 50
5.10 Infinite recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.11 Keyboard input . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.12 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.13 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.14 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 Fruitful functions 57
6.1 Return values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.2 Incremental development . . . . . . . . . . . . . . . . . . . . . . . 58
6.3 Composition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
6.4 Boolean functions . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
6.5 More recursion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
6.6 Leap of faith . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
xvi Contents
6.7 One more example . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.8 Checking types . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
6.9 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
6.10 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
6.11 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
7 Iteration 69
7.1 Multiple assignment . . . . . . . . . . . . . . . . . . . . . . . . . . 69
7.2 Updating variables . . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.3 The while statement . . . . . . . . . . . . . . . . . . . . . . . . . 70
7.4 break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
7.5 Square roots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
7.6 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
7.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
7.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
8 Strings 79
8.1 A string is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . 79
8.2 len . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
8.3 Traversal with a for loop . . . . . . . . . . . . . . . . . . . . . . . 80
8.4 String slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
8.5 Strings are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 82
8.6 A find function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.7 Looping and counting . . . . . . . . . . . . . . . . . . . . . . . . . 83
8.8 string methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.9 The in operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
8.10 String comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.11 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
8.12 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
8.13 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Contents xvii
9 Case study: word play 91
9.1 Reading word lists . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
9.2 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
9.3 Search . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
9.4 Looping with indices . . . . . . . . . . . . . . . . . . . . . . . . . 94
9.5 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
9.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
9.7 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
10 Lists 99
10.1 A list is a sequence . . . . . . . . . . . . . . . . . . . . . . . . . . 99
10.2 Lists are mutable . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
10.3 Traversing a list . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
10.4 List operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
10.5 List slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10.6 List methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
10.7 Map, filter and reduce . . . . . . . . . . . . . . . . . . . . . . . . . 104
10.8 Deleting elements . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
10.9 Objects and values . . . . . . . . . . . . . . . . . . . . . . . . . . 106
10.10 Aliasing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
10.11 List arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
10.12 Copying lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.13 Lists and strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
10.14 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
10.15 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
10.16 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112
xviii Contents
11 Dictionaries 113
11.1 Dictionary as a set of counters . . . . . . . . . . . . . . . . . . . . 114
11.2 Looping and dictionaries . . . . . . . . . . . . . . . . . . . . . . . 116
11.3 Reverse lookup . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
11.4 Dictionaries and lists . . . . . . . . . . . . . . . . . . . . . . . . . 118
11.5 Hints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
11.6 Long integers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
11.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
11.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
11.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123
12 Tuples 125
12.1 Tuples are immutable . . . . . . . . . . . . . . . . . . . . . . . . . 125
12.2 Tuple assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
12.3 Tuples as return values . . . . . . . . . . . . . . . . . . . . . . . . 127
12.4 Lists and tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
12.5 Dictionaries and tuples . . . . . . . . . . . . . . . . . . . . . . . . 129
12.6 Sorting tuples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
12.7 Sequences of sequences . . . . . . . . . . . . . . . . . . . . . . . . 131
12.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
12.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
13 Case study: data structure selection 133
13.1 DSU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133
13.2 Word frequency analysis . . . . . . . . . . . . . . . . . . . . . . . 134
13.3 Random numbers . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
13.4 Word histogram . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
13.5 Most common words . . . . . . . . . . . . . . . . . . . . . . . . . 137
13.6 Optional arguments . . . . . . . . . . . . . . . . . . . . . . . . . . 137
Contents xix
13.7 Dictionary subtraction . . . . . . . . . . . . . . . . . . . . . . . . . 138
13.8 Random words . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.9 Markov analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
13.10 Data structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
13.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
14 Files 143
14.1 Persistence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
14.2 Reading and writing . . . . . . . . . . . . . . . . . . . . . . . . . . 143
14.3 Format operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
14.4 Filenames and paths . . . . . . . . . . . . . . . . . . . . . . . . . . 145
14.5 Catching exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . 147
14.6 Databases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
14.7 Pickling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
14.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
15 Classes and objects 151
15.1 User-defined types . . . . . . . . . . . . . . . . . . . . . . . . . . 151
15.2 Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
15.3 Rectangles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
15.4 Instances as return values . . . . . . . . . . . . . . . . . . . . . . . 154
15.5 Objects are mutable . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.6 Copying . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
15.7 Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
15.8 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
15.9 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
xx Contents
16 Classes and functions 159
16.1 Time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159
16.2 Pure functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
16.3 Modifiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
16.4 Prototyping versus planning . . . . . . . . . . . . . . . . . . . . . 162
16.5 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
16.6 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
17 Classes and methods 165
17.1 Object-oriented features . . . . . . . . . . . . . . . . . . . . . . . . 165
17.2 print time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
17.3 Another example . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
17.4 A more complicated example . . . . . . . . . . . . . . . . . . . . . 168
17.5 The init method . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
17.6 The str method . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
17.7 Operator overloading . . . . . . . . . . . . . . . . . . . . . . . . . 170
17.8 Type-based dispatch . . . . . . . . . . . . . . . . . . . . . . . . . . 171
17.9 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
17.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
17.11 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
18 Inheritance 175
18.1 Card objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175
18.2 Class attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
18.3 Comparing cards . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
18.4 Decks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
18.5 Printing the deck . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
18.6 Add, remove, shuffle and sort . . . . . . . . . . . . . . . . . . . . . 180
18.7 Inheritance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
18.8 Class diagrams . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
18.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183
18.10 Exercises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184
Contents xxi
19 Case study: Tkinter 187
19.1 Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
19.2 Buttons and callbacks . . . . . . . . . . . . . . . . . . . . . . . . . 188
19.3 Canvas widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
19.4 Coordinate sequences . . . . . . . . . . . . . . . . . . . . . . . . . 190
19.5 More widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
19.6 Packing widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192
19.7 Menus and Callables . . . . . . . . . . . . . . . . . . . . . . . . . 195
19.8 Binding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196
19.9 Glossary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
A Debugging 201
A.1 Syntax errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201
A.2 Runtime errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
A.3 Semantic errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
本源码包内暂不包含可直接显示的源代码文件,请下载源码包。