🎨
Creative Challenges
L3PRO· 104 lessons10 unique formats nobody else teaches
104 lessons across 10 themed modules: Code Detective (broken-codebase mysteries), AI Pair-Reversed (catch Claude's deliberate bugs), Time-Travel Refactor (Python 2.4 → modern), Bug Bounty, Code Golf (shortest wins), Refactor Master (legacy → idiomatic), Whodunit Mysteries, plus more unique formats no other site teaches.
✅ Who this is for
- ·You finished Foundations (or know Python at that level) and want play, not more theory
- ·Open to weird formats: Code Detective, Time-Travel Refactor, AI Pair-Reversed
- ·You learn by breaking things and reading other people's mess — perfect, that's the entire track
🔒🕵️ Case 02: The Mutable Default Argument
🔒🕵️ Case 03: The Floating-Point Money Heist
🔒🕵️ Case 04: The Integer Division Trap
🔒🕵️ Case 05: The Shadowed Built-in
🔒🕵️ Case 06: The Closure Conspiracy
🔒🕵️ Case 07: The Encoding Mystery
🔒🕵️ Case 08: The Dict Mutation Heist
🔒🕵️ Case 09: The Silent Exception Swallower
🔒🏆 Case 10 — Capstone: The Race-Condition Counter
🔒🤖 Spot Claude's mistake: flatten a nested list
🔒🤖 Spot Claude's mistake: email validator is too permissive
🔒🤖 Spot Claude's mistake: pagination off-by-one
🔒🤖 Spot Claude's mistake: dedup lost the order
🔒🤖 Spot Claude's mistake: Fibonacci that never finishes
🔒🤖 Spot Claude's mistake: CSV reader ate the header
🔒🤖 Spot Claude's mistake: sorting mixed-type values crashes
🔒🤖 Spot Claude's mistake: LRU cache that never evicts
🔒🤖 Spot Claude's mistake: counting words ignores case
🔒🏆 Capstone: Claude's retry decorator swallows everything
🔒🎯 Review: Creative module 2 recap
🔒⏰ 1998 → 2026: %-formatting → f-strings
🔒⏰ 2002 → 2026: dict() constructor → dict literal
🔒⏰ Python 2.7 → 3.12: print statement → print function
🔒⏰ 2008 → 2026: open/read/close → pathlib.read_text
🔒⏰ 2010 → 2026: filter+map+lambda → list comprehension
🔒⏰ 2015 → 2026: verbose class → @dataclass
🔒⏰ 2018 → 2026: try/except dict lookup → .get()
🔒⏰ 2018 → 2026: typing.List[int] → list[int]
🔒⏰ 2019 → 2026: callbacks → async/await
🔒🏆 Time-Travel Capstone: 2005 module → 2026 rewrite
🔒🐛 Bug Bounty #01: The Phantom Date
🔒🐛 Bug Bounty #02: CSV escaping nightmare
🔒🐛 Bug Bounty #03: The shopping cart that won't empty
🔒🐛 Bug Bounty #04: String concat in a hot loop
🔒🐛 Bug Bounty #05: Average of an empty list
🔒🐛 Bug Bounty #06: The password check that always passes
🔒🐛 Bug Bounty #07: Query-string parsing rolls its own
🔒🐛 Bug Bounty #08: Celsius → Fahrenheit off by a hair
🔒🐛 Bug Bounty #09: Inventory drops below zero
🔒🏆 Bug Bounty Capstone: Production rate-limiter
🔒🎯 Review: Creative module 4 recap
🔒⛳ Golf #01: FizzBuzz in under 80 chars
🔒⛳ Golf #02: Reverse the words (not the chars)
🔒⛳ Golf #03: Palindrome check
🔒⛳ Golf #04: Sum of squares 1..10
🔒⛳ Golf #05: Count the vowels
🔒⛳ Golf #06: Anagram check
🔒⛳ Golf #07: Flatten a list of lists (one level)
🔒⛳ Golf #08: Caesar cipher (+3 shift)
🔒⛳ Golf #09: Find duplicates in a list
🔒🏆 ⛳ Golf Capstone: Mini JSON formatter
🔒🔧 Refactor #01: Flatten the if-pyramid
🔒🔧 Refactor #02: Name the magic numbers
🔒🔧 Refactor #03: Loop → comprehension
🔒🔧 Refactor #04: Boolean-parameter trap → @dataclass config
🔒🔧 Refactor #05: God-function → small helpers
🔒🔧 Refactor #06: Mutating a global → pure function
🔒🔧 Refactor #07: String `+=` → `join`
🔒🔧 Refactor #08: isinstance ladder → dispatch dict
🔒🔧 Refactor #09: Manual counter → collections.Counter
🔒🏆 Refactor Capstone: 10 sins, one module
🔒🎯 Review: Creative module 6 recap
🔒🔮 Whodunit #01: The vanishing logs
🔒🔮 Whodunit #02: Late-binding closure
🔒🔮 Whodunit #03: The Schrödinger dictionary
🔒🔮 Whodunit #04: The hash that won't
🔒🔮 Whodunit #05: Generator exhaustion
🔒🔮 Whodunit #06: The frozen import
🔒🔮 Whodunit #07: Truthy zero
🔒🔮 Whodunit #08: The disappearing return
🔒🔮 Whodunit #09: Equality vs identity
🔒🏆 Whodunit Capstone: the heisenbug
🔒🎯 Showdown #01: Membership test list vs set
🔒🎯 Showdown #02: Sum with for-loop vs sum()
🔒🎯 Showdown #03: f-string vs .format() vs %
🔒🎯 Showdown #04: dict.get vs try/except
🔒🎯 Showdown #05: list.append loop vs comprehension
🔒🎯 Showdown #06: bytes.join vs string concat
🔒🎯 Showdown #07: deque vs list.pop(0)
🔒🎯 Showdown #08: in for str vs set for str-of-chars
🔒🎯 Showdown #09: math.fsum vs sum for floats
🔒🏆 Showdown Capstone: counting words
🔒🎯 Review: Creative module 8 recap
🔒🔬 Edge Case #01: Empty input
🔒🔬 Edge Case #02: Single-element input
🔒🔬 Edge Case #03: Negative numbers
🔒🔬 Edge Case #04: Unicode strings
🔒🔬 Edge Case #05: Duplicate keys
🔒🔬 Edge Case #06: Very large numbers
🔒🔬 Edge Case #07: None vs missing
🔒🔬 Edge Case #08: Empty list multiplied
🔒🔬 Edge Case #09: Whitespace-only strings
🔒🏆 Edge Case Capstone: bulletproof tax calculator
🔒✨ Magic #01: Dunder __add__
🔒✨ Magic #02: __iter__ + __next__
🔒✨ Magic #03: __enter__ / __exit__
🔒✨ Magic #07: Metaclass basics
🔒✨ Magic #09: contextlib decorators
🔒🏆 Magic Capstone: tiny ORM with descriptors + metaclass
Tip: click any lesson to revisit it. After your first attempt, the “Show example” button reveals the full solution.