I have been told to write a function which calculates the average of the numbers in a given list. Empty arrays should return 0. Here is my code:
def find_average(numbers):
c = sum(numbers)
for number in numbers:
d = c / number
return d
pass
Could someone explain why this doesn't work?
CodePudding user response:
The for
loop isn't necessary, since you're already using sum()
. Once you've summed all the elements, the only thing you need to do is divide the sum by the number of entries in numbers
:
def find_average(numbers):
if not numbers:
return 0
return sum(numbers) / len(numbers)
CodePudding user response:
def find_average(numbers):
c = sum(numbers)
if not numbers: # to avoid the division by zero
return 0
return c / len(numbers)
print(find_average([1, 2, 3]))
When you return it stops the function, so you were only dividing by the first element. To get the number of elements in a list you can use the keyword len
.