Challenge 1: Annotate a Function — Possible Solution ==================================================================== def fizzbuzz(n: int) -> str: if n % 3 == 0 and n % 5 == 0: return "FizzBuzz" elif n % 3 == 0: return "Fizz" elif n % 5 == 0: return "Buzz" else: return str(n) print(fizzbuzz(15)) Output: FizzBuzz WHY THIS WORKS AS AN ANSWER ------------------------------ This is the exact fizzbuzz(n) function from Course 2, Chapter 8's own testing challenge, with two additions matching this chapter's basic type-hint syntax: n: int reuses the name: Type parameter-annotation form from this chapter's add(a: int, b: int) example, documenting that n is expected to be an integer. -> str reuses this chapter's return-type annotation syntax, placed after the parameter list and before the colon. This is accurate because every branch of the if/elif/else chain returns a string value — "FizzBuzz", "Fizz", "Buzz", or str(n) (which explicitly converts n to a string in the fallback case) — so str is the correct, honest return type for every possible path through the function, not just the common case. Nothing about the function's actual LOGIC changed at all — per this chapter's own explanation, type hints are purely documentation as far as the Python interpreter itself is concerned, so adding them here doesn't change fizzbuzz(15)'s behavior or output in any way; it only adds information a tool like mypy (or a code editor) could use to catch a mismatched call before it ever runs.