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.
These five days cover Level 00 exercises. No imports, no tests, no complexity. Just you and Python.
- 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
- 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
- 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
- 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
- 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
Level 0 projects introduce tests, file I/O, and real program structure. Read the concept guide What Is a Variable before starting.
- 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
- 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
- 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
- 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
- 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
Finish Level 0 and start reading concept guides. Take the quizzes to test your understanding.
- 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
- 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
- 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
- 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
- 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
Level 1 introduces input validation, CSV files, JSON, and file system operations.
- 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
- 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
- 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
- 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
- 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
Finish Level 1, take quizzes, and start Level 2.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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)
- 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
- 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:
- Start from an empty
.pyfile - Use at least 3 concepts from the curriculum (functions, file I/O, error handling, etc.)
- Write at least one test
- Write a one-paragraph description of what you built in a
notes.mdfile
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.
- 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 → |
|---|