- Preface
- Who Is This Book For?
- Goals of the Book
- Navigating the Book
- What’s New in the Third Edition?
- Getting Started
- Resources for Teachers
- Conventions Used in This Book
- Using Code Examples
- O’Reilly Online Learning
- How to Contact Us
- Acknowledgments
- 1. Programming as a Way of Thinking
- Arithmetic Operators
- Expressions
- Arithmetic Functions
- Strings
- Values and Types
- Formal and Natural Languages
- Debugging
- Glossary
- Exercises
- 2. Variables and Statements
- Variables
- State Diagrams
- Variable Names
- The import Statement
- Expressions and Statements
- The print Function
- Arguments
- Comments
- Debugging
- Glossary
- Exercises
- 3. Functions
- Defining New Functions
- Parameters
- Calling Functions
- Repetition
- Variables and Parameters Are Local
- Stack Diagrams
- Tracebacks
- Why Functions?
- Debugging
- Glossary
- Exercises
- 4. Functions and Interfaces
- The jupyturtle Module
- Making a Square
- Encapsulation and Generalization
- Approximating a Circle
- Refactoring
- Stack Diagram
- A Development Plan
- Docstrings
- Debugging
- Glossary
- Exercises
- 5. Conditionals and Recursion
- Integer Division and Modulus
- Boolean Expressions
- Logical Operators
- if Statements
- The else Clause
- Chained Conditionals
- Nested Conditionals
- Recursion
- Stack Diagrams for Recursive Functions
- Infinite Recursion
- Keyboard Input
- Debugging
- Glossary
- Exercises
- 6. Return Values
- Some Functions Have Return Values
- And Some Have None
- Return Values and Conditionals
- Incremental Development
- Boolean Functions
- Recursion with Return Values
- Leap of Faith
- Fibonacci
- Checking Types
- Debugging
- Glossary
- Exercises
- 7. Iteration and Search
- Loops and Strings
- Reading the Word List
- Updating Variables
- Looping and Counting
- The in Operator
- Search
- Doctest
- Glossary
- Exercises
- 8. Strings and Regular Expressions
- A String Is a Sequence
- String Slices
- Strings Are Immutable
- String Comparison
- String Methods
- Writing Files
- Find and Replace
- Regular Expressions
- String Substitution
- Debugging
- Glossary
- Exercises
- 9. Lists
- A List Is a Sequence
- Lists Are Mutable
- List Slices
- List Operations
- List Methods
- Lists and Strings
- Looping Through a List
- Sorting Lists
- Objects and Values
- Aliasing
- List Arguments
- Making a Word List
- Debugging
- Glossary
- Exercises
- 10. Dictionaries
- A Dictionary Is a Mapping
- Creating Dictionaries
- The in Operator
- A Collection of Counters
- Looping and Dictionaries
- Lists and Dictionaries
- Accumulating a List
- Memos
- Debugging
- Glossary
- Exercises
- 11. Tuples
- Tuples Are Like Lists
- But Tuples Are Immutable
- Tuple Assignment
- Tuples as Return Values
- Argument Packing
- Zip
- Comparing and Sorting
- Inverting a Dictionary
- Debugging
- Glossary
- Exercises
- 12. Text Analysis and Generation
- Unique Words
- Punctuation
- Word Frequencies
- Optional Parameters
- Dictionary Subtraction
- Random Numbers
- Bigrams
- Markov Analysis
- Generating Text
- Debugging
- Glossary
- Exercises
- Exercise
- 13. Files and Databases
- Filenames and Paths
- f-strings
- YAML
- Shelve
- Storing Data Structures
- Checking for Equivalent Files
- Walking Directories
- Debugging
- Glossary
- Exercises
- 14. Classes and Functions
- Programmer-Defined Types
- Attributes
- Objects as Return Values
- Objects Are Mutable
- Copying
- Pure Functions
- Prototype and Patch
- Design-First Development
- Debugging
- Glossary
- Exercises
- 15. Classes and Methods
- Defining Methods
- Another Method
- Static Methods
- Comparing Time Objects
- The __str__ Method
- The __init__ Method
- Operator Overloading
- Debugging
- Glossary
- Exercises
- 16. Classes and Objects
- Creating a Point
- Creating a Line
- Equivalence and Identity
- Creating a Rectangle
- Changing Rectangles
- Deep Copy
- Polymorphism
- Debugging
- Glossary
- Exercises
- 17. Inheritance
- Representing Cards
- Card Attributes
- Printing Cards
- Comparing Cards
- Decks
- Printing the Deck
- Add, Remove, Shuffle, and Sort
- Parents and Children
- Specialization
- Debugging
- Glossary
- Exercises
- 18. Python Extras
- Sets
- Counters
- defaultdict
- Conditional Expressions
- List Comprehensions
- any and all
- Named Tuples
- Packing Keyword Arguments
- Debugging
- Glossary
- Exercises
- 19. Final Thoughts
- Index
- About the Author