O bug ocorre porque len(nums) é 0 quando a lista está vazia, causando ZeroDivisionError.
Uma correção explícita é rejeitar listas vazias:
def average(nums):
if not nums:
raise ValueError("A lista não pode estar vazia")
total = 0
for n in nums:
total += n
return total / len(nums)
print(average([]))
Nesse caso, a chamada average([]) lançará:
ValueError: A lista não pode estar vazia
Se o comportamento desejado for retornar 0 para uma lista vazia, use:
def average(nums):
if not nums:
return 0
return sum(nums) / len(nums)
print(average([])) # 0