average([]) divides by zero because len(nums) is 0. An empty list has no defined average, so handle it explicitly:
def average(nums):
if not nums:
raise ValueError("Cannot calculate the average of an empty list")
return sum(nums) / len(nums)
print(average([1, 2, 3])) # 2.0
Calling average([]) now raises a clear ValueError instead of an accidental ZeroDivisionError.