Introduction
Part I: Getting Started
1. Dealing with Errors and Asking for Help
2. Environmental Setup
3. Formatting with the Black Module
Part II: Best Practices, Tools, and Techniques
4. Choosing Useful Names
5. Finding Code Smells
6. Writing Pythonic Code
7. Programming Jargon
8. Common Python Gotchas
9. Esoteric Python Oddities
10. Crafting Effective Functions
11. Comments and Type Hints
12. Version Control with Git
13. Profiling Code
Part III: Practice Problems
14. Tower of Hanoi
15. Connect Four
Part IV: Readable Object-Oriented Programming
16. Classes and Objects
17. Inheritance
18. Pythonic Object-Oriented Programming
Index