One last thing before we move on. Same surface as a write step — but the lesson doesn't complete until this passes.
Last drill. Cursor wrote summarize_order to look up an item's price,
multiply it by a quantity it parses from a string, and return a total.
Three failure modes:
prices[item]raisesKeyErrorif the item isn't in the catalog.int(qty_text)raisesValueErrorif the string isn't a number.- everything else (a real bug you didn't anticipate) should crash.
The starter has a single except Exception: that swallows all three.
The last order in the list is a real bug — the caller passed a list
instead of an item name, which raises TypeError. The test harness at
the bottom catches that and prints bug: crashed loudly so you can see
the bug escaping. Right now it prints invalid instead — the broad
except is hiding it.
Fix the except: catch KeyError and ValueError together with a
tuple, return "invalid" for either case, and let any other exception
fly through.
Expected output:
20
invalid
invalid
bug: crashed loudly