I N T R O D U C T I O N ―How can I get better at programming?‖ I see this common question often from those who have
started their programming journey. Of course, there are plenty of Python programming tutorials for
total beginners. However, these tutorials can carry the reader so far. After finishing these lessons,
readers often find their skills more than capable for yet another ―Hello, world!‖ tutorial but not
advanced enough to begin writing their own programs. They find themselves in the so-called ―tutorial
hell.‖ They learn the basic syntax of a programming language, but wonder where to begin when it
comes to applying them to their own programs.
Programming is like any other skill: it gets better with practice. I’ve chosen the exercises in this
book because they are short and straightforward. Each exercise involves only a handful of
programming concepts and you can solve them in a single session at the computer. If you’ve been
intimidated by ―competitive programming‖ or ―hacker challenge‖ websites, you’ll find these to be an
instructive and gentler way to level up your coding skills.
When I wrote Automate the Boring Stuff with Python, I wanted to teach programming to as many
non-programmers as possible. So, I released that book (and all of my other programming books)
under a Creative Commons license so they could be downloaded and shared for free from my website
https://inventwithpython.com. You can pay for a physical print book but it’s important to me to lower all
barriers to access, so the books are available online for free. I’ll cite some of these books in the
Further Reading section of the exercises in this book.
What Will This Book Do For You? This book offers 42 programming exercises for inexperienced Python programmers. I’ve
gathered them into this book and combined them with plain-English explanations. You can read the
description for each exercise and start on the solution immediately. If you need further help, you can
read about the programming concepts you’ll need to know for the solution. You can also find out
about any surprising ―gotchas‖ you might encounter while writing your solution. Finally, if you still
need help, I provide a fill-in-the-blank template of the solution. Try to resist the temptation to
immediately jump to the hints; try to solve these exercises yourself first.
As you work through these exercises, you’ll find that some use the same coding techniques as
other problems. A lot of programming expertise develops this way: being able to solve a problem isn’t
about how smart you are but if you’ve seen similar problems before. My aim isn’t to stump you with
complex, contrived programming challenges but help you explore simple problems with gentle
explanations.