The best Python projects for complete beginners are small enough to finish in an evening and each add exactly one new idea. Below are twelve, in order, from your first week to your third month — each with the concepts it practises, a hint to get started, and a stretch goal for when it works.
If you have not yet written your first program, start with Python for absolute beginners: where to start, then come back for project one.
How to use this list
- Do them in order. Each assumes the ones before.
- Plan in plain English first. Write the steps as comments, then fill in the code.
- Finish before polishing. A working ugly version beats a perfect plan.
- Do the stretch goal only once the basic version works.
Week 1–2 projects: variables, input and decisions
1. Tip calculator
Practises: input, converting text to numbers, arithmetic, f-strings.
Ask for the bill total and the tip percentage, then print the tip and the total.
Hint: input() always gives you text. Convert it with float() before doing maths.
Stretch: split the total between a number of people.
2. Temperature converter
Practises: formulas, if statements.
Ask whether to convert Celsius to Fahrenheit or the reverse, then do it. (F = C × 9 / 5 + 32.)
Stretch: add a message for freezing and boiling points.
3. Grade calculator
Practises: if, elif, else, comparison operators.
Turn a score out of 100 into a letter grade.
Stretch: reject scores below 0 or above 100 with a helpful message.
Week 3–4 projects: loops
4. Number guessing game
Practises: while loops, the random module, counting.
The computer picks a number from 1 to 100; the player guesses until they get it, with "higher" or "lower" hints.
import random
secret = random.randint(1, 100)
guess = None
tries = 0
while guess != secret:
guess = int(input("Your guess: "))
tries += 1
if guess < secret:
print("Higher!")
elif guess > secret:
print("Lower!")
print(f"Got it in {tries} tries.")
Stretch: limit the player to seven guesses, and handle someone typing a word instead of a number.
5. Multiplication table quiz
Practises: for loops, range(), keeping score.
Ask ten random multiplication questions and report a score.
Stretch: time how long the quiz took with the time module.
6. Rock, paper, scissors
Practises: random choice, combining conditions with and/or, game loops.
Stretch: play best of five and keep a running score.
Month 2 projects: lists, dictionaries and functions
7. To-do list
Practises: lists, adding and removing items, a menu loop.
A menu that lets you add, show, complete and remove tasks. Our explainer on Python lists covers every method you need.
Stretch: number the tasks and let the user remove one by number.
8. Contact book
Practises: dictionaries, looking things up by key.
Store names and phone numbers; let the user add, find and delete contacts. See Python dictionaries explained simply.
Stretch: store an email address and birthday for each contact too, using a dictionary inside a dictionary.
9. Simple calculator with functions
Practises: writing functions, parameters, return values.
One function each for add, subtract, multiply and divide, and a loop that asks what to do.
Stretch: handle division by zero with try/except. Our guide to Python functions covers everything in this project.
Month 3 projects: files and real tasks
10. To-do list that remembers
Practises: reading and writing files, with open().
Upgrade project 7 so tasks are saved to a text file and loaded next time.
11. Word counter
Practises: reading files, string methods, dictionaries for counting.
Read a text file and report the number of words and the ten most common ones.
Stretch: ignore common words such as "the" and "and".
12. Folder organiser
Practises: the pathlib or os module, working with real files.
Sort the files in a folder into subfolders by type: images, documents, spreadsheets, other.
Important: test it on a folder of copies, never on real files first.
Stretch: add a "dry run" mode that only prints what it would do.
When you get stuck
- Read the last line of the error message, then the line number.
- Add
print()calls to see what your variables actually hold. - Shrink the problem: get one small part working on its own.
- Ask for a hint, not a solution — from a person, a forum, or an AI set up as a tutor, as described in how to learn Python with ChatGPT.
If you would rather practise one idea at a time before tackling a project, our Python exercises for beginners are short drills with answers.
Three of these — the number guessing game, the calculator and rock-paper-scissors — are built step by step in the final projects part of Python for Beginners, after the chapters that teach every concept they use. The free Practice Toolkit on the Python for Beginners page adds 50 graded exercises, including full mini programs, with reference solutions.
Frequently asked questions
What is the best first Python project?
Something that uses input, a little arithmetic and a decision, such as a tip calculator. Finishing it matters more than which one you pick.
How long should a beginner project take?
One to three evenings. If it takes longer, it is probably two projects.
Should I put beginner projects on GitHub?
It is good practice once you are comfortable, and useful later for a portfolio. It is not required to learn.