I'm learning Python & practising from this site and here is the particular problem at hand:
Return the "centered" average of an array of ints, which we'll say is the mean average of the values, except ignoring the largest and smallest values in the array. If there are multiple copies of the smallest value, ignore just one copy, and likewise for the largest value. Use int division to produce the final average. You may assume that the array is length 3 or more.
centered_average([1, 2, 3, 4, 100])→
centered_average([1, 1, 5, 5, 10, 8, 7])→
centered_average([-10, -4, -2, -4, -2, 0])→
My solution is as follows:
def centered_average(nums): items = len(nums) total = 0 high = max(nums) low = min(nums) for num in nums: total += num aveg = (total -high-low) / (items-2) return aveg
The above code works fine. I want to ask more experienced programmers if this could be done in a better manner - or is this solution fine?