HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
Also available in other formats.
Register your product to gain access to bonus material or receive a coupon.
Transform Your Ideas into High-Quality Python Code!
Zed Shaw has perfected the world’s best system for becoming a truly effective Python 3.x developer. Follow it and you will succeed—just like the tens of millions of programmers he’s already taught. You bring the discipline, commitment, and persistence; the author supplies everything else.
In Learn Python 3 the Hard Way, Zed Shaw taught you the basics of Programming with Python 3. Now, in Learn More Python 3 the Hard Way, you’ll go far beyond the basics by working through 52 brilliantly crafted projects. Each one helps you build a key practical skill, combining demos to get you started and challenges to deepen your understanding. Zed then teaches you even more in 12 hours of online videos, where he shows you how to break, fix, and debug your code.
First, you’ll discover how to analyze a concept, idea, or problem to implement in software. Then, step by step, you’ll learn to design solutions based on your analyses and implement them as simply and elegantly as possible. Throughout, Shaw stresses process so you can get started and build momentum, creativity to solve new problems, and quality so you’ll build code people can rely on.
It’ll be hard at first. But soon, you’ll just get it—and that will feel great!
This course will reward you for every minute you put into it. Soon, you’ll go beyond merely writing code that runs: you’ll craft high-quality Python code that solves real problems. You’ll be a serious Python programmer.
Perfect for Everyone Who’s Already Started Working with Python, including Junior Developers and Seasoned Python Programmers Upgrading to Python 3.6+
Register your product at informit.com/register for convenient access to downloads, updates, and/or corrections as they become available.
Please visit the author's site at http://learncodethehardway.org/more-python-book/.
Download the sample pages (includes Exercises 6, 40, and the Index)
Preface xiv
Part I: Initial Knowledge 2
Exercise 0: The Setup 6
A Programmer’s Editor 6
Python 3.6 6
A Working Terminal 6
A Working pip+virtualenv Configuration 7
Lab Journal 7
A Github.com Account 7
git 7
Optional: Screen-Recording Software 8
Further Study 8
Exercise 1: On Process 10
Exercise Challenge 11
Study Drills 12
Further Study 12
Exercise 2: On Creativity 14
Exercise Challenge 14
Study Drill 15
Exercise 3: On Quality 16
Exercise Challenge 18
Study Drill 18
Part II: Quick Hacks 20
Exercise 4: Dealing with Command Line Arguments 24
Exercise Challenge 24
Solution 25
Study Drills 25
Exercise 5: cat 26
Exercise Challenge 26
Solution 27
Study Drills 27
Further Study 27
Exercise 6: find 28
Exercise Challenge 29
Study Drills 30
Further Study 30
Exercise 7: grep 32
Exercise Challenge 32
Study Drills 33
Further Study 33
Exercise 8: cut 34
Exercise Challenge 35
Study Drill 35
Further Study 35
Exercise 9: sed 36
Exercise Challenge 36
Study Drills 37
Further Study 37
Exercise 10: sort 38
Exercise Challenge 38
Study Drills 39
Further Study 39
Exercise 11: uniq 40
Exercise Challenge 40
Study Drills 41
Further Study 41
Exercise 12: Review 42
Exercise Challenge 42
Study Drills 43
Further Study 43
Part III: Data Structures 46
Exercise 13: Single Linked Lists 50
Description 50
Controller 52
Test 53
Introductory Auditing 55
Exercise Challenge 56
Auditing 56
Study Drill 56
Exercise 14: Double Linked Lists 58
Introducing Invariant Conditions 59
Exercise Challenge 60
Study Drill 61
Exercise 15: Stacks and Queues 62
Exercise Challenge 62
Breaking It 64
Further Study 64
Exercise 16: Bubble, Quick, and Merge Sort 66
Exercise Challenge 66
Study Drills 71
Exercise 17: Dictionary 74
Exercise Challenge 74
Doing a “Code Master Copy” 74
Copy the Code 75
Annotate the Code 78
Summarize the Data Structure 78
Memorize the Summary 79
Implement from Memory 80
Repeat 80
Study Drills 81
Break It 81
Exercise 18: Measuring Performance 82
The Tools 82
Analyzing Performance 84
Exercise Challenge 86
Study Drills 86
Breaking It 86
Further Study 86
Exercise 19: Improving Performance 88
Exercise Challenge 89
Further Study 90
Exercise 20: Binary Search Trees 92
BSTree Requirements 92
Deleting 93
Exercise Challenge 94
Study Drills 94
Exercise 21: Binary Search 96
Exercise Challenge 96
Study Drills 96
Further Study 97
Exercise 22: Suffix Arrays 98
Exercise Challenge 99
Study Drills 99
Further Study 99
Exercise 23: Ternary Search Trees 100
Exercise Challenge 100
Study Drills 102
Exercise 24: Fast URL Search 104
Exercise Challenge 104
Study Drills 105
Further Study 105
Part IV: Intermediate Projects 106
Exercise 25: xargs 108
Exercise Challenge 108
Study Drills 108
Exercise 26: hexdump 110
Exercise Challenge 111
Study Drill 112
Further Study 112
Exercise 27: tr 114
Exercise Challenge 114
A Criticism of 45-Minute Blocks 115
Study Drills 115
Exercise 28: sh 116
Exercise Challenge 116
Study Drill 117
Further Study 117
Exercise 29: diff and patch 118
Exercise Challenge 118
Study Drill 119
Further Study 119
Part V: Parsing Text 120
Exercise 30: Finite State Machines 122
Exercise Challenge 123
Study Drills 125
Further Study 125
Exercise 31: Regular Expressions 126
Exercise Challenge 127
Study Drills 128
Further Study 128
Exercise 32: Scanners 130
Puny Python Scanner 131
Exercise Challenge 133
Study Drills 133
Further Study 133
Exercise 33: Parsers 136
Recursive Descent Parsing 137
BNF Grammars 138
Quick Demo Hack Parser 140
Exercise Challenge 142
Study Drill 142
Further Study 142
Exercise 34: Analyzers 144
Visitor Pattern 144
A Short Puny Python Analyzer 145
Parser versus Analyzer 148
Exercise Challenge 148
Study Drills 149
Further Study 149
Exercise 35: Interpreters 150
Interpreters versus Compilers 150
Python Is Both 151
How to Write an Interpreter 151
Exercise Challenge 152
Study Drills 152
Further Study 152
Exercise 36: Simple Calculator 154
Exercise Challenge 154
Study Drills 155
Further Study 155
Exercise 37: Little BASIC 156
Exercise Challenge 156
Study Drills 157
Part VI: SQL and Object Relational Mapping 158
Exercise 38: Introduction to SQL 160
What Is SQL? 160
The Setup 161
Learning SQL Vocabulary 162
SQL Grammar 163
Further Study 163
Exercise 39: Creating with SQL 164
Creating Tables 164
Creating a Multi-table Database 165
Inserting Data 165
Insert Referential Data 166
Exercise Challenge 166
Further Study 167
Exercise 40: Reading with SQL 168
Select across Many Tables 168
Exercise Challenge 169
Further Study 170
Exercise 41: Updating with SQL 172
Updating Complex Data 172
Replacing Data 173
Exercise Challenge 173
Further Study 174
Exercise 42: Deleting with SQL 176
Deleting Using Other Tables 176
Exercise Challenge 177
Further Study 178
Exercise 43: SQL Administration 180
Destroying and Altering Tables 180
Migrating and Evolving Data 181
Exercise Challenge 182
Further Study 182
Exercise 44: Using Python’s Database API 184
Learning an API 184
Exercise Challenge 185
Further Study 185
Exercise 45: Creating an ORM 186
Exercise Challenge 186
Further Study 187
Part VII: Final Projects 188
Exercise 46: blog 190
Exercise Challenge 190
Study Drills 191
Exercise 47: bc 192
Exercise Challenge 192
Study Drill 193
Exercise 48: ed 194
Exercise Challenge 194
Study Drills 195
Exercise 49: sed 196
Exercise Challenge 197
Study Drill 197
Exercise 50: vi 198
Exercise Challenge 198
Study Drills 199
Exercise 51: lessweb 200
Exercise Challenge 200
Breaking It 200
Study Drills 201
Exercise 52: moreweb 202
Exercise Challenge 202
Breaking It 203
Further Study 203
Index 204