Skip to content

30-Day Python Challenge

Home: README

A curated 30-day path through the learn.python curriculum. Spend 30 to 60 minutes per day. By day 30, you will have written real Python programs, passed real tests, and built something from scratch.

Prerequisites: A computer with Python 3.11+ installed. If you have not installed Python yet, follow 03_SETUP_ALL_PLATFORMS.md first.


Week 1: Absolute Basics (Days 1-5)

These five days cover Level 00 exercises. No imports, no tests, no complexity. Just you and Python.

Day 1 — First Steps

  • Project: 01-first-steps
  • Time: 30 minutes
  • Objective: Run your first Python command and print text to the screen
  • Bonus challenge: Make the program print three lines instead of one, with a blank line between each

Day 2 — Hello World and Scripts

  • Project: 02-hello-world and 03-your-first-script
  • Time: 40 minutes
  • Objective: Understand the difference between the Python REPL and running a .py file
  • Bonus challenge: Write a script that prints your name, your city, and your favorite food on separate lines

Day 3 — Variables and Numbers

  • Project: 04-variables and 05-numbers-and-math
  • Time: 45 minutes
  • Objective: Store values in variables and do arithmetic
  • Bonus challenge: Calculate how many seconds are in a year using only multiplication

Day 4 — Strings, Input, Decisions

  • Project: 06-strings-and-text, 07-user-input, 08-making-decisions
  • Time: 60 minutes
  • Objective: Work with text, get input from the user, and use if/else
  • Bonus challenge: Write a program that asks for your age and tells you whether you can vote (18+), drive (16+), or neither

Day 5 — Lists, Loops, Dictionaries, Functions, Files

  • Project: 09-lists through 15-putting-it-together
  • Time: 60 minutes
  • Objective: Complete all remaining Level 00 exercises and write a program that combines multiple concepts
  • Bonus challenge: Modify the final exercise to save its output to a file

Week 2: Real Projects Begin (Days 6-10)

Level 0 projects introduce tests, file I/O, and real program structure. Read the concept guide What Is a Variable before starting.

Day 6 — Terminal and Calculator

  • Project: 01-terminal-hello-lab and 02-calculator-basics
  • Time: 45 minutes
  • Objective: Write programs with proper structure and pass your first pytest tests
  • Bonus challenge: Add a modulo (%) operation to the calculator

Day 7 — Converter and Questionnaire

Day 8 — Classifying and Counting

Day 9 — File Reading and String Cleaning

Day 10 — Writing and Finding Duplicates


Week 3: Building Confidence (Days 11-15)

Finish Level 0 and start reading concept guides. Take the quizzes to test your understanding.

Day 11 — Menus and Contacts

  • Project: 11-simple-menu-loop and 12-contact-card-builder
  • Time: 50 minutes
  • Objective: Build interactive programs with loops and structured output
  • Bonus challenge: Add a "search contacts" option to the contact builder

Day 12 — Alarms, Summaries, and Toolkit

Day 13 — Concept Review: Loops and Functions

  • Read: How Loops Work and Functions Explained
  • Quiz: Run python concepts/quizzes/how-loops-work-quiz.py and python concepts/quizzes/functions-explained-quiz.py
  • Time: 40 minutes
  • Objective: Solidify your understanding of the two most important building blocks
  • Bonus challenge: Score 100% on both quizzes without looking at notes

Day 14 — Concept Review: Collections and Types

  • Read: Collections Explained and Types and Conversions
  • Quiz: Run the matching quizzes for each
  • Time: 40 minutes
  • Objective: Understand lists, dicts, sets, and how Python handles types
  • Bonus challenge: Write a script that creates a list, a dict, and a set, then prints the type of each

Day 15 — Concept Review: Files and Errors

  • Read: Files and Paths and Errors and Debugging
  • Quiz: Run the matching quizzes for each
  • Time: 40 minutes
  • Objective: Understand file handling and how to read error messages
  • Bonus challenge: Intentionally create 3 different error types (NameError, TypeError, FileNotFoundError) and read each traceback

Week 4: Leveling Up (Days 16-20)

Level 1 introduces input validation, CSV files, JSON, and file system operations.

Day 16 — Input Validation

Day 17 — Calculations and Parsing

  • Project: 03-unit-price-calculator and 04-log-line-parser
  • Time: 50 minutes
  • Objective: Parse structured text and perform calculations on extracted data
  • Bonus challenge: Make the log parser count how many entries per log level

Day 18 — CSV and Grades

Day 19 — Dates, Paths, JSON

Day 20 — Routing, Dispatching, Counting


Week 5: Stretch and Review (Days 21-25)

Finish Level 1, take quizzes, and start Level 2.

Day 21 — Batch Operations and Tracking

Day 22 — Quiz Day

  • Quizzes: Run all quizzes you have not yet taken
  • Flashcards: Run python practice/flashcards/review-runner.py --level 0 and --level 1
  • Time: 45 minutes
  • Objective: Review and reinforce everything from Levels 0 and 1
  • Bonus challenge: Get every flashcard right on the first try

Day 23 — Level 2: Dictionaries and Nested Data

Day 24 — Data Cleaning and Error Handling

Day 25 — Reports and Deduplication


Final Sprint (Days 26-30)

Day 26 — Benchmarking and Inventory

Day 27 — Config and Parsing

Day 28 — Retry, Convert, Validate

Day 29 — Review Day

  • Flashcards: Run python practice/flashcards/review-runner.py for all levels
  • Challenges: Pick 3 challenges from practice/challenges/beginner/ and solve them
  • Time: 60 minutes
  • Objective: Consolidate everything you have learned over 28 days
  • Bonus challenge: Solve all 3 challenges without looking at any reference material

Day 30 — Build Something From Scratch

  • Project: Your choice. No starter code. No instructions. Build something.
  • Time: 60 minutes
  • Objective: Prove to yourself that you can create a Python program from a blank file

Ideas if you need one: - A personal to-do list that saves to a JSON file - A quiz game that reads questions from a CSV - A file organizer that sorts files in a directory by extension - A simple budget calculator that tracks income and expenses - A flashcard app (yes, you can build one now)

Rules for Day 30: 1. Start from an empty .py file 2. Use at least 3 concepts from the curriculum (functions, file I/O, error handling, etc.) 3. Write at least one test 4. Write a one-paragraph description of what you built in a notes.md file


After the Challenge

Congratulations. You have written real Python programs, passed real tests, and built something from scratch. Here is what to do next:

  1. Continue the curriculum. You are partway through Level 2. Finish it, then move to Level 3.
  2. Try an expansion module. Web Scraping and CLI Tools are great next steps.
  3. Review with flashcards daily. Even 5 minutes of spaced repetition builds lasting knowledge.
  4. Share what you built on Day 30. Open a discussion on GitHub Discussions and show your project.

Tips for Success

  • Consistency beats intensity. 30 minutes every day is better than 4 hours on Saturday.
  • Type the code yourself. Do not copy-paste. Typing builds muscle memory.
  • Read error messages. They are not punishment. They are directions.
  • Take notes. Every project has a notes.md file. Use it.
  • It is okay to repeat a day. If you did not understand something, do it again tomorrow.

← README Home Getting Started →