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¶
- Project: 03-temperature-converter and 04-yes-no-questionnaire
- Time: 45 minutes
- Objective: Handle user input and convert between types
- Bonus challenge: Add Kelvin to the temperature converter
Day 8 — Classifying and Counting¶
- Project: 05-number-classifier and 06-word-counter-basic
- Time: 45 minutes
- Objective: Use conditionals and string methods to analyze data
- Bonus challenge: Make the word counter ignore punctuation
Day 9 — File Reading and String Cleaning¶
- Project: 07-first-file-reader and 08-string-cleaner-starter
- Time: 50 minutes
- Objective: Read files from disk and process text data
- Bonus challenge: Count how many lines in the file are blank
Day 10 — Writing and Finding Duplicates¶
- Project: 09-daily-checklist-writer and 10-duplicate-line-finder
- Time: 50 minutes
- Objective: Write output to files and detect patterns in data
- Bonus challenge: Make the duplicate finder case-insensitive
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¶
- Project: 13-alarm-message-generator, 14-line-length-summarizer, 15-level0-mini-toolkit
- Time: 60 minutes
- Objective: Complete Level 0 and build a mini toolkit combining multiple skills
- Bonus challenge: Add one more tool to the mini toolkit
Day 13 — Concept Review: Loops and Functions¶
- Read: How Loops Work and Functions Explained
- Quiz: Run
python concepts/quizzes/how-loops-work-quiz.pyandpython 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¶
- Project: 01-input-validator-lab and 02-password-strength-checker
- Time: 50 minutes
- Objective: Validate user input and check string patterns
- Bonus challenge: Add a "password generator" feature that creates a strong password
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¶
- Project: 05-csv-first-reader and 06-simple-gradebook-engine
- Time: 55 minutes
- Objective: Read CSV files and process tabular data
- Bonus challenge: Add a "highest grade" and "lowest grade" summary to the gradebook
Day 19 — Dates, Paths, JSON¶
- Project: 07-date-difference-helper, 08-path-exists-checker, 09-json-settings-loader
- Time: 60 minutes
- Objective: Work with dates, file paths, and JSON data
- Bonus challenge: Make the JSON loader handle missing keys gracefully with defaults
Day 20 — Routing, Dispatching, Counting¶
- Project: 10-ticket-priority-router, 11-command-dispatcher, 12-file-extension-counter
- Time: 60 minutes
- Objective: Build decision-making systems and analyze file systems
- Bonus challenge: Add a "most common extension" summary to the file counter
Week 5: Stretch and Review (Days 21-25)¶
Finish Level 1, take quizzes, and start Level 2.
Day 21 — Batch Operations and Tracking¶
- Project: 13-batch-rename-simulator, 14-basic-expense-tracker, 15-level1-mini-automation
- Time: 60 minutes
- Objective: Complete Level 1 with batch processing and automation
- Bonus challenge: Add a "monthly summary" feature to the expense tracker
Day 22 — Quiz Day¶
- Quizzes: Run all quizzes you have not yet taken
- Flashcards: Run
python practice/flashcards/review-runner.py --level 0and--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¶
- Project: 01-dictionary-lookup-service and 02-nested-data-flattener
- Time: 50 minutes
- Objective: Work with complex, nested data structures
- Bonus challenge: Handle a three-level-deep nested dictionary
Day 24 — Data Cleaning and Error Handling¶
- Project: 03-data-cleaning-pipeline and 04-error-safe-divider
- Time: 50 minutes
- Objective: Clean messy data and handle errors gracefully
- Bonus challenge: Add a "cleaning report" that shows how many values were fixed
Day 25 — Reports and Deduplication¶
- Project: 05-text-report-generator and 06-records-deduplicator
- Time: 50 minutes
- Objective: Generate formatted output and identify duplicate records
- Bonus challenge: Make the deduplicator report which records were duplicates
Final Sprint (Days 26-30)¶
Day 26 — Benchmarking and Inventory¶
- Project: 07-list-search-benchmark and 08-mini-inventory-engine
- Time: 50 minutes
- Objective: Measure performance and build a stateful system
- Bonus challenge: Add a "low stock alert" to the inventory engine
Day 27 — Config and Parsing¶
- Project: 09-config-driven-calculator and 10-mock-api-response-parser
- Time: 50 minutes
- Objective: Build configuration-driven programs and parse API-style data
- Bonus challenge: Support YAML configuration in addition to JSON
Day 28 — Retry, Convert, Validate¶
- Project: 11-retry-loop-practice, 12-csv-to-json-converter, 13-validation-rule-engine
- Time: 60 minutes
- Objective: Implement resilience patterns, data conversion, and validation
- Bonus challenge: Add configurable retry delays (linear, exponential)
Day 29 — Review Day¶
- Flashcards: Run
python practice/flashcards/review-runner.pyfor 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:
- Continue the curriculum. You are partway through Level 2. Finish it, then move to Level 3.
- Try an expansion module. Web Scraping and CLI Tools are great next steps.
- Review with flashcards daily. Even 5 minutes of spaced repetition builds lasting knowledge.
- 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.mdfile. Use it. - It is okay to repeat a day. If you did not understand something, do it again tomorrow.
| ← README | Home | Getting Started → |
|---|---|---|