Learn Python 3 the Hard Way

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

A Very Simple Introduction to the Terrifyingly Beautiful World of Computers and Code. 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. Manage complex projects with a programmer’s text editor Leverage the immense power of data structures Apply algorithms to process your data structures Master indispensable text parsing and processing techniques Use SQL to efficiently and logically model stored data Learn powerful command-line tools and skills Combine multiple practices in complete projects 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+

Author(s): Zed A. Shaw
Publisher: Addison-Wesley
Year: 2017

Language: English
Pages: 345

Table of Contents

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