Pythonoid PRO
The first 3 topics — how code runs, making the dragon speak, and what it remembers — are free, start to finish, with no account limits and no time pressure. PRO is a one-time $6.99 purchase that unlocks everything after that: 11 more topics, plus the optional challenge track.
What PRO unlocks
Tap a topic to see what it actually teaches.
The Dragon Decides16 exercises
An if statement lets a program do something only in certain situations, instead of doing the same thing every time.
- Comparison operators: >, <, >=, <=, ==, !=
- True and False as real values
- The if statement
- elif for additional cases
- else as the catch-all
- Why the order of conditions changes the result
The Dragon Repeats15 exercises
A for loop runs the same instruction several times, so a child writes one line instead of twenty.
- The for loop
- range(n) — counting from zero
- Why range(n) never reaches n
- Using the loop variable inside the loop
- Building a running total across passes
- Loops and if statements together
The Dragon's Vigil15 exercises
A while loop repeats for as long as something stays true, which makes it the right tool when you do not know in advance how many times to go round.
- The while loop
- Conditions that change over time
- Why a loop can run forever, and how to spot it
- break — leaving a loop immediately
- continue — skipping one pass only
- Choosing between for and while
The Dragon's Inventory16 exercises
A list holds several values under one name, in order, so a program can work with a whole collection instead of one thing at a time.
- Creating a list
- Indexing from zero
- Slicing with [start:end]
- append() — adding an item
- remove() — taking an item out
- What copying a list actually does
- Looping over a list
Talking to the Dragon Tamer15 exercises
input() is the one command that genuinely pauses a program and waits for the player to type something back.
- Asking a question with input()
- input() always returns text, never a number
- Converting text to a number with int()
- The TypeError from forgetting to convert
- Comparing a converted number correctly
The Dragon's Stat Sheet15 exercises
A dictionary is a stat sheet — a value looked up by its name, not by its position in a list.
- Creating a dictionary and looking up a value by key
- The difference between key-based and position-based lookup
- Updating a key's value
- Adding a brand new key
- The KeyError from a missing key, and .get() with a default
- Looping over a list of dictionaries
The Dragon's Abilities15 exercises
A function lets you name a piece of code once and run it again as many times as you like.
- Defining a function with def
- Calling a function, and calling it more than once
- Parameters that customise what a function does
- return hands a value back — it does not display it
- A function call finishes and your code continues afterward
- Choosing whether a function should print or return
The Dragon's Diagnosis12 exercises
A Python error message already tells you what went wrong — this topic teaches how to actually read it.
- Reading a traceback's last line first
- Recognising IndexError, KeyError, TypeError, ValueError, ZeroDivisionError by name
- Syntax errors vs. runtime errors vs. logic errors
- Why a logic error produces no error message at all
- A five-step debugging procedure: read, expect, observe, change one thing, rerun
The Dragon's Battle Plans12 exercises
The same handful of loop shapes shows up again and again in real programs — this topic gives them names.
- The max-tracking and min-tracking patterns
- The counter pattern, and how it differs from an accumulator
- Search-with-a-flag, and finding a value's position
- Why binary search needs a sorted list, and roughly how much faster it is
- Selection sort, as a way to see how sorting actually works
- Testing a pattern against an empty list, a single item, and identical values
The Dragon's Records12 exercises
The same information can be stored several genuinely different ways — this topic is about choosing which one fits the question you'll actually ask.
- The same data as two parallel lists, a list of dicts, and a dict of lists
- Looping over nested data, including a loop inside a loop
- Updating a value that lives one level deep
- Sets for removing duplicates and checking membership
- Why a set's order isn't guaranteed, and when to use sorted()
- Choosing the right structure for the question being asked
The Dragon's Cleanup12 exercises
A name never changes what code does — only whether a human reading it later can tell what it's for.
- Why a variable's name never affects what a program computes
- Magic numbers, and the real inconsistency bug they cause
- Named constants as the fix — one value, one place it's defined
- Spotting exact duplication vs. structural duplication
- Extracting a repeated shape into a function with a parameter
- Refactoring: changing how code looks without changing what it does
The optional challenge track
Extra, harder puzzles for kids who want more — never required, never a prerequisite for anything else. Two flavors run across every topic: fixing a broken piece of code with no crash to point at, and solving something the obvious way before finding the shorter, better way to write the same thing.