Every project has a spec, a starter and the rubric a finished version has to meet. The first seven run entirely in the browser and check each step as you go; the last three are built to run on your own machine. Open one in a workspace — the starter and the rubric are already in it — then publish it to a public URL on your pyrun.in/u/<handle> portfolio.
Totals, percentages, grades and the class topper from a dict of marks.
Take the marks of five students in five subjects and print a report card: total, percentage, grade, pass/fail (every subject needs 33) and the class topper, in a neatly aligned table.
Build it in a browser workspace at /build/project-marks-report-card, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Record spending, save it to a CSV file, load it back, see where the money went.
Record a student's expenses, refuse bad amounts, save them to expenses.csv with the csv module, load them back, and print this month's total and a per-category breakdown with the biggest category's share.
Build it in a browser workspace at /build/project-expense-tracker-csv, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Word count, sentences, top words and reading time for any paragraph.
Analyse a paragraph: count words and sentences, find the longest word, estimate reading time, and list the five most used words once filler words like "the" and "is" are removed.
Build it in a browser workspace at /build/project-text-analyser, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
The classic game, played from a list of guesses so it can be tested.
Build the guess-the-number game with safe input parsing, a try limit and a score, driven by a fixed list of guesses instead of input(). Then write the perfect player: binary search, which never needs more than 7 guesses from 1 to 100.
Build it in a browser workspace at /build/project-number-guessing-game, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Turn a list of deliveries into a real scorecard: total, overs, strike rates, run rate.
Read an innings as a list of "batter:event" strings and produce the scorecard: team total and wickets, overs from legal balls only, each batter's runs, balls, fours, sixes and strike rate, extras and the run rate.
Build it in a browser workspace at /build/project-cricket-scorecard, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Three months of orders, the five questions a manager asks, answered with pandas.
Load three months of orders from a small electronics shop into a DataFrame and answer the manager's questions: revenue by region, top products, revenue per month, month-on-month growth and a region × product pivot table of units.
Build it in a browser workspace at /build/project-sales-analysis-pandas, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
A TodoList class that saves itself to JSON and loads back exactly as it was.
Write a TodoList class with a Task dataclass: add tasks with priorities, complete and remove them, save the list to todos.json, load it into a new object with ids intact, list what is pending by priority, and search by word.
Build it in a browser workspace at /build/project-todo-manager-json, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Your own weekly Python-news archive.
Fetch HN's Python tag feed, parse the front-page entries, dedupe by URL, and save the result to a JSON file. Run it weekly to build an archive of Python conversations you can search.
Build it in a browser workspace at /build/project-hn-python-scraper, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Turn your CSV bank statement into a leak-finder.
Load a CSV bank statement, group by month + category with pandas, and plot the trends with matplotlib. Deliver a `spending.png` chart and a printed summary showing your top three leak categories.
Build it in a browser workspace at /build/project-spending-analyzer, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
Async, decorator-driven, deployable in an hour.
Build a Telegram bot that listens for URLs in your DM, fetches the page, sends a 3-line summary back via Claude. Async, uses decorators for message routing, and ships on Railway's free tier.
Build it in a browser workspace at /build/project-telegram-summarizer, publish it, and it lands on your pyrun.in/u/<handle> portfolio.
pandas sales analysis, and a to-do manager class that saves itself to JSON. They use only the standard library and pandas, so they run inside the browser workspace, and each step has a check that runs your code. The last three are bigger and run on your own machine: an HN scraper (requests, BeautifulSoup), a spending analyzer with charts, and an async Telegram bot you deploy. Passing the checks shows the code does what the step asks; the rubric on each page is the fuller bar for a portfolio version.