Skip to content
Skip to the lesson
← RoadmapDay 3 of 90Foundationsstarts with 5 min · 2h 15m in all

Conditions, loops, and the shape of logic

By the end of today you can read a nested block of conditions and loops and say exactly which lines run for a given input, and you can flatten a deeply nested block into something a person can follow.

YesterdayOn Day 2 you learned that names point at values. Today those values start deciding what your program does next.

TomorrowTomorrow you wrap this logic into functions, so it can be named, reused, and tested.

01

Why this matters

Control flow is where most logic bugs live. Being able to trace which branch executes, without running the code, is the skill that separates guessing from debugging.

Conditionals
Branching evaluated in order, where the first matching condition wins.
Loops
Repeating work over a collection or until a condition changes.
Truthiness
Empty containers and zero count as false, which is convenient and occasionally a trap.
Tracing control flow
Working out which lines run for a given input, without executing the code.
02

See it first

5 min

One small thing, worked through here before you go anywhere. Guess the answer before you open it.

A search box. The query runs, comes back, and the page has to decide what to show.

results = search("kayaks")

if results:
    show(results)
else:
    show_error("Search failed")

The search ran perfectly and found nothing. Which branch runs?

Decide before you open it. Being wrong here is the point.

Show me what happens

The error branch. Your user is told the site is broken when in fact it worked and the answer was simply nothing. An empty list is falsy in Python, and so is an empty string, an empty dict, 0, and None. The if is not asking "did this succeed". It is asking "is this thing truthy", and one working search with no matches answers no. Two different states got collapsed into one test: it failed, and it succeeded with nothing in it. They need different code and different words on screen. If search returns None on failure, then the test is if results is None, and emptiness gets its own honest message.

Where you meet this at work

This exact confusion is behind a large share of bug reports that turn out not to be bugs. It also hides in if not count when zero is a real answer, and in if not user_input when somebody typed 0. Truthiness is convenient, and it lies whenever empty and missing mean different things.

03

Learn it

70 min

Copy this into Claude or ChatGPT. It quizzes you before it explains anything, which is deliberate. The resources under it are how you check what it told you.

Today's Master Prompt

Free · sign in

A prompt written for this day alone: your level, the exact scope, what to leave out, and an instruction to quiz you before it explains anything. Paste it into Claude or ChatGPT and it teaches you today's material.

Sign in to continueNo card, now or later.

Check it against something that is not a model

An assistant can be fluent and wrong, and on a topic you met today you will not catch it. These cover the same ground and were made by people who do this for a living, so they are what you hold the explanation up against. They are other people's work and we only link to them, so judge them for yourself.

3 hand-picked resources

Free · sign in

Videos, official docs and articles covering the same ground, each opened and annotated by hand. They are what you check the assistant against on a day you cannot yet catch it being wrong.

Sign in to continueNo card, now or later.
04

Build it

40 min

Write a function with at least three nested if statements that decides whether an order qualifies for free shipping. Get it working. Then rewrite it using guard clauses so nothing is nested more than one level deep, and confirm both versions agree on at least five different inputs.

05

Recall it

20 min

Answer out loud, reveal, then mark honestly whether you had it. That score is the only thing on this page you do not get to choose.

4 recall questions

Free · sign in

Questions you answer from memory, then grade yourself against the real answer. The score is carried into the mastery rating below it, so an honest miss cannot quietly become a tick.

Sign in to continueNo card, now or later.
06

Rate it

Finishing a day and understanding it are two different things, and this page counts them separately.

Mastery tracking

Free · sign in

Rate yourself against five named criteria per concept. Completion and mastery are tracked separately, and anything you rate shakily comes back automatically on a spaced schedule.

Sign in to continueNo card, now or later.
07

Recap

  • 01Conditions are evaluated in order, and the first match wins
  • 02Empty containers and zero are falsy, which is convenient and occasionally a trap
  • 03`and` and `or` return an operand, not a boolean
  • 04Guard clauses flatten nesting by handling the exception first

Your progress

Free · sign in

Mark days complete, pick up where you left off across devices, and watch completion and mastery diverge. Free, and the account exists only so ninety days of work cannot vanish with a cleared browser.

Sign in to continueNo card, now or later.