Challenge 2: Variadic Average — Possible Solution ==================================================================== def average(*args): return sum(args) / len(args) print(average(4, 8)) print(average(1, 2, 3, 4, 5)) Output: 6.0 3.0 WHY THIS WORKS AS AN ANSWER ------------------------------ *args in the function signature reuses this chapter's own *args example directly — it collects however many positional arguments the function is called with into a single tuple named args, regardless of whether that's 2 numbers or 5. sum(args) adds up every number in that tuple, exactly like the chapter's total(*args) example. len(args) then counts how many numbers were passed in — reusing len() from earlier chapters, but applied to the args tuple itself rather than a list or string. Dividing sum(args) by len(args) computes the average generically for any number of arguments, which is the entire reason *args is useful here — a fixed-parameter function like average(a, b) could only ever average exactly two numbers, but average(*args) works whether it's called with 2 numbers, 5 numbers, or any other count.