Challenge 3: Dynamic Typing in Action — Possible Solution ==================================================================== value = 100 print(type(value)) # value = "one hundred" print(type(value)) # WHY THIS WORKS AS AN ANSWER ------------------------------ The SAME variable name, value, is assigned first to an int (100) and then reassigned to a completely different type, str ("one hundred") — exactly this chapter's core point about dynamic typing: there is no declaration keyword locking value to a specific type the way Kotlin's val/var would, so nothing prevents the second assignment from being a totally different type than the first. Printing type(value) both BEFORE and AFTER the reassignment gives concrete, visible proof that the type genuinely changed — the first print shows , the second shows , for the exact same variable name — rather than just asserting dynamic typing exists without actually demonstrating it running. This is fundamentally different from the equivalent attempt in Kotlin (val value = 100 followed by value = "one hundred"), which would fail to COMPILE at all, per this chapter's own Go/Kotlin comparison table — Python allows this at runtime with no error whatsoever.