Learn Python the right way
Learn Python the right way
How to think like a computer scientist
About the Book
Table of Contents
- Copyright Notice
- Foreword
-
Preface
- How and why I came to use Python
- Finding a textbook
- Introducing programming with Python
- Building a community
-
Contributor List
- Second Edition
- First Edition
-
Chapter 1: The way of the program
- 1.1. The Python programming language
- 1.2. What is a program?
- 1.3. What is debugging?
- 1.4. Syntax errors
- 1.5. Runtime errors
- 1.6. Semantic errors
- 1.7. Experimental debugging
- 1.8. Formal and natural languages
- 1.9. The first program
- 1.10. Comments
- 1.11. Glossary
- 1.12. Exercises
-
Chapter 2: Variables, expressions and statements
- 2.1. Values and data types
- 2.2. Variables
- 2.3. Variable names and keywords
- 2.4. Statements
- 2.5. Evaluating expressions
- 2.6. Operators and operands
- 2.7. Type converter functions
- 2.8. Order of operations
- 2.9. Operations on strings
- 2.10. Input
- 2.11. Composition
- 2.12. The modulus operator
- 2.13. Glossary
- 2.14. Exercises
-
Chapter 3: Hello, little turtles!
- 3.1. Our first turtle program
- 3.2. Instances — a herd of turtles
- 3.3. The for loop
- 3.4. Flow of Execution of the for loop
- 3.5. The loop simplifies our turtle program
- 3.6. A few more turtle methods and tricks
- 3.7. Glossary
- 3.8. Exercises
-
Chapter 4: Functions
- 4.1. Functions
- 4.2. Functions can call other functions
- 4.3. Flow of execution
- 4.4. Functions that require arguments
- 4.5. Functions that return values
- 4.6. Variables and parameters are local
- 4.7. Turtles Revisited
- 4.8. Glossary
- 4.9. Exercises
-
Chapter 5: Conditionals
- 5.1. Boolean values and expressions
- 5.2. Logical operators
- 5.3. Truth Tables
- 5.4. Simplifying Boolean Expressions
- 5.5. Conditional execution
- 5.6. Omitting the else clause
- 5.7. Chained conditionals
- 5.8. Nested conditionals
- 5.9. The return statement
- 5.10. Logical opposites
- 5.11. Type conversion
- 5.12. A Turtle Bar Chart
- 5.13. Glossary
- 5.14. Exercises
-
Chapter 6: Fruitful functions
- 6.1. Return values
- 6.2. Program development
- 6.3. Debugging with print
- 6.4. Composition
- 6.5. Boolean functions
- 6.6. Programming with style
- 6.7. Unit testing
- 6.8. Glossary
- 6.9. Exercises
-
Chapter 7: Iteration
- 7.1. Assignment
- 7.2. Updating variables
-
7.3. The
for
loop revisited -
7.4. The
while
statement - 7.5. The Collatz 3n + 1 sequence
- 7.6. Tracing a program
- 7.7. Counting digits
- 7.8. Abbreviated assignment
- 7.9. Help and meta-notation
- 7.10. Tables
- 7.11. Two-dimensional tables
- 7.12. Encapsulation and generalization
- 7.13. More encapsulation
- 7.14. Local variables
- 7.15. The break statement
- 7.16. Other flavours of loops
- 7.17. An example
- 7.18. The continue statement
- 7.19. More generalization
- 7.20. Functions
- 7.21. Paired Data
- 7.22. Nested Loops for Nested Data
- 7.23. Newton’s method for finding square roots
- 7.24. Algorithms
- 7.25. Glossary
- 7.26. Exercises
-
Chapter 8: Strings
- 8.1. A compound data type
- 8.2. Working with strings as single things
- 8.3. Working with the parts of a string
- 8.4. Length
-
8.5. Traversal and the
for
loop - 8.6. Slices
- 8.7. String comparison
- 8.8. Strings are immutable
-
8.9. The
in
andnot in
operators -
8.10. A
find
function - 8.11. Looping and counting
- 8.12. Optional parameters
-
8.13. The built-in
find
method -
8.14. The
split
method - 8.15. Cleaning up your strings
- 8.16. The string format method
- 8.17. Summary
- 8.18. Glossary
- 8.19. Exercises
-
Chapter 9: Tuples
- 9.1. Tuples are used for grouping data
- 9.2. Tuple assignment
- 9.3. Tuples as return values
- 9.4. Composability of Data Structures
- 9.5. Glossary
- 9.6. Exercises
-
Chapter 10: Event handling
- 10.1. Event-driven programming
- 10.2. Keypress events
- 10.3. Mouse events
- 10.4. Automatic events from a timer
- 10.5. An example: state machines
- 10.6. Glossary
- 10.7. Exercises
-
Chapter 11: Lists
- 11.1. List values
- 11.2. Accessing elements
- 11.3. List length
- 11.4. List membership
- 11.5. List operations
- 11.6. List slices
- 11.7. Lists are mutable
- 11.8. List deletion
- 11.9. Objects and references
- 11.10. Aliasing
- 11.11. Cloning lists
-
11.12. Lists and
for
loops - 11.13. List parameters
- 11.14. List methods
- 11.15. Pure functions and modifiers
- 11.16. Functions that produce lists
- 11.17. Strings and lists
-
11.18.
list
andrange
- 11.19. Nested lists
- 11.20. Matrices
- 11.21. Glossary
- 11.22. Exercises
-
Chapter 12: Modules
- 12.1. Random numbers
-
12.2. The
time
module -
12.3. The
math
module - 12.4. Creating your own modules
- 12.5. Namespaces
- 12.6. Scope and lookup rules
- 12.7. Attributes and the dot operator
-
12.8. Three
import
statement variants - 12.9. Turn your unit tester into a module
- 12.10. Glossary
- 12.11. Exercises
-
Chapter 13: Files
- 13.1. About files
- 13.2. Writing our first file
- 13.3. Reading a file line-at-a-time
- 13.4. Turning a file into a list of lines
- 13.5. Reading the whole file at once
- 13.6. Working with binary files
- 13.7. An example
- 13.8. Directories
- 13.9. What about fetching something from the web?
- 13.10. Glossary
- 13.11. Exercises
-
Chapter 14: List Algorithms
- 14.1. Test-driven development
- 14.2. The linear search algorithm
- 14.3. A more realistic problem
- 14.4. Binary Search
- 14.5. Removing adjacent duplicates from a list
- 14.6. Merging sorted lists
- 14.7. Alice in Wonderland, again!
- 14.8. Eight Queens puzzle, part 1
- 14.9. Eight Queens puzzle, part 2
- 14.10. Glossary
- 14.11. Exercises
-
Chapter 15: Classes and Objects — the Basics
- 15.1. Object-oriented programming
- 15.2. User-defined compound data types
- 15.3. Attributes
- 15.4. Improving our initializer
- 15.5. Adding other methods to our class
- 15.6. Instances as arguments and parameters
- 15.7. Converting an instance to a string
- 15.8. Instances as return values
- 15.9. A change of perspective
- 15.10. Objects can have state
- 15.11. Glossary
- 15.12. Exercises
-
Chapter 16: Classes and Objects — Digging a little deeper
- 16.1. Rectangles
- 16.2. Objects are mutable
- 16.3. Sameness
- 16.4. Copying
- 16.5. Glossary
- 16.6. Exercises
-
Chapter 17: PyGame
- 17.1. The game loop
- 17.2. Displaying images and text
- 17.3. Drawing a board for the N queens puzzle
- 17.4. Sprites
- 17.5. Events
- 17.6. A wave of animation
- 17.7. Aliens - a case study
- 17.8. Reflections
- 17.9. Glossary
- 17.10. Exercises
-
Chapter 18: Recursion
- 18.1. Drawing Fractals
- 18.2. Recursive data structures
- 18.3. Processing recursive number lists
- 18.4. Case study: Fibonacci numbers
- 18.5. Example with recursive directories and files
- 18.6. An animated fractal, using PyGame
- 18.7. Glossary
- 18.8. Exercises
-
Chapter 19: Exceptions
- 19.1. Catching exceptions
- 19.2. Raising our own exceptions
- 19.3. Revisiting an earlier example
-
19.4. The
finally
clause of thetry
statement - 19.5. Glossary
- 19.6. Exercises
-
Chapter 20: Dictionaries
- 20.1. Dictionary operations
- 20.2. Dictionary methods
- 20.3. Aliasing and copying
- 20.4. Sparse matrices
- 20.5. Memoization
- 20.6. Counting letters
- 20.7. Glossary
- 20.8. Exercises
-
Chapter 21: A Case Study: Indexing your files
- 21.1. The Crawler
- 21.2. Saving the dictionary to disk
- 21.3. The Query Program
- 21.4. Compressing the serialized dictionary
- 21.5. Glossary
-
Chapter 22: Even more OOP
- 22.1. MyTime
- 22.2. Pure functions
- 22.3. Modifiers
-
22.4. Converting
increment
to a method - 22.5. An “Aha!” insight
- 22.6. Generalization
- 22.7. Another example
- 22.8. Operator overloading
- 22.9. Polymorphism
- 22.10. Glossary
- 22.11. Exercises
-
Chapter 23: Collections of objects
- 23.1. Composition
-
23.2.
Card
objects -
23.3. Class attributes and the
__str__
method - 23.4. Comparing cards
- 23.5. Decks
- 23.6. Printing the deck
- 23.7. Shuffling the deck
- 23.8. Removing and dealing cards
- 23.9. Glossary
- 23.10. Exercises
-
Chapter 24: Inheritance
- 24.1. Inheritance
- 24.2. A hand of cards
- 24.3. Dealing cards
- 24.4. Printing a Hand
-
24.5. The
CardGame
class -
24.6.
OldMaidHand
class -
24.7.
OldMaidGame
class - 24.8. Glossary
- 24.9. Exercises
-
Chapter 25: Linked lists
- 25.1. Embedded references
-
25.2. The
Node
class - 25.3. Lists as collections
- 25.4. Lists and recursion
- 25.5. Infinite lists
- 25.6. The fundamental ambiguity theorem
- 25.7. Modifying lists
- 25.8. Wrappers and helpers
-
25.9. The
LinkedList
class - 25.10. Invariants
- 25.11. Glossary
- 25.12. Exercises
-
Chapter 26: Stacks
- 26.1. Abstract data types
- 26.2. The Stack ADT
- 26.3. Implementing stacks with Python lists
- 26.4. Pushing and popping
- 26.5. Using a stack to evaluate postfix
- 26.6. Parsing
- 26.7. Evaluating postfix
- 26.8. Clients and providers
- 26.9. Glossary
- 26.10. Exercises
-
Chapter 27: Queues
- 27.1. The Queue ADT
- 27.2. Linked Queue
- 27.3. Performance characteristics
- 27.4. Improved Linked Queue
- 27.5. Priority queue
-
27.6. The
Golfer
class - 27.7. Glossary
- 27.8. Exercises
-
Chapter 28: Trees
- 28.1. Building trees
- 28.2. Traversing trees
- 28.3. Expression trees
- 28.4. Tree traversal
- 28.5. Building an expression tree
- 28.6. Handling errors
- 28.7. The animal tree
- 28.8. Glossary
- 28.9. Exercises
-
Appendix A: Debugging
- A.1. Syntax errors
- A.2. I can’t get my program to run no matter what I do.
- A.3. Runtime errors
- A.4. My program does absolutely nothing.
- A.5. My program hangs.
- A.6. Infinite Loop
- A.7. Infinite Recursion
- A.8. Flow of Execution
- A.9. When I run the program I get an exception.
-
A.10. I added so many
print
statements I get inundated with output. - A.11. Semantic errors
- A.12. My program doesn’t work.
- A.13. I’ve got a big hairy expression and it doesn’t do what I expect.
- A.14. I’ve got a function or method that doesn’t return what I expect.
- A.15. I’m really, really stuck and I need help.
- A.16. No, I really need help.
-
Appendix B: An odds-and-ends Workbook
- B.1. The Five Strands of Proficiency
- B.2. Sending Email
- B.3. Write your own Web Server
- B.4. Using a Database
-
Appendix C: Configuring Ubuntu for Python Development
- C.1. Vim
- C.2. $HOME environment
- C.3. Making a Python script executable and runnable from anywhere
-
Appendix D: Customizing and Contributing to the Book
- D.1. Getting the Source
- D.2. Making the HTML Version
-
Appendix E: Some Tips, Tricks, and Common Errors
- E.1. Functions
- E.2. Problems with logic and flow of control
- E.3. Local variables
- E.4. Event handler functions
- E.5. String handling
- E.6. Looping and lists
The Leanpub 60 Day 100% Happiness Guarantee
Within 60 days of purchase you can get a 100% refund on any Leanpub purchase, in two clicks.
Now, this is technically risky for us, since you'll have the book or course files either way. But we're so confident in our products and services, and in our authors and readers, that we're happy to offer a full money back guarantee for everything we sell.
You can only find out how good something is by trying it, and because of our 100% money back guarantee there's literally no risk to do so!
So, there's no reason not to click the Add to Cart button, is there?
See full terms...
Earn $8 on a $10 Purchase, and $16 on a $20 Purchase
We pay 80% royalties on purchases of $7.99 or more, and 80% royalties minus a 50 cent flat fee on purchases between $0.99 and $7.98. You earn $8 on a $10 sale, and $16 on a $20 sale. So, if we sell 5000 non-refunded copies of your book for $20, you'll earn $80,000.
(Yes, some authors have already earned much more than that on Leanpub.)
In fact, authors have earnedover $14 millionwriting, publishing and selling on Leanpub.
Learn more about writing on Leanpub
Free Updates. DRM Free.
If you buy a Leanpub book, you get free updates for as long as the author updates the book! Many authors use Leanpub to publish their books in-progress, while they are writing them. All readers get free updates, regardless of when they bought the book or how much they paid (including free).
Most Leanpub books are available in PDF (for computers) and EPUB (for phones, tablets and Kindle). The formats that a book includes are shown at the top right corner of this page.
Finally, Leanpub books don't have any DRM copy-protection nonsense, so you can easily read them on any supported device.
Learn more about Leanpub's ebook formats and where to read them