Skip to content

Commit

Permalink
Update average_median.py (TheAlgorithms#998)
Browse files Browse the repository at this point in the history
added doctest, fixed TypeError: list indices must be integers or slices, not float error due to number/2 producing float as index.
  • Loading branch information
SandersLin authored and cclauss committed Jul 10, 2019
1 parent 897f1d0 commit 37fbd8c
Showing 1 changed file with 18 additions and 25 deletions.
43 changes: 18 additions & 25 deletions maths/average_median.py
Original file line number Diff line number Diff line change
@@ -1,41 +1,34 @@
"""
Find median of a list of numbers.
def median(nums):
"""
Find median of a list of numbers.
Read more about medians:
https://en.wikipedia.org/wiki/Median
"""
>>> median([0])
0
>>> median([4,1,3,2])
2.5
Args:
nums: List of nums
def median(nums):
"""Find median of a list of numbers."""
# Sort list
Returns:
Median.
"""
sorted_list = sorted(nums)
print("List of numbers:")
print(sorted_list)

# Is number of items in list even?
med = None
if len(sorted_list) % 2 == 0:
# Find index for first middle value.
mid_index_1 = len(sorted_list) / 2
# Find index for second middle value.
mid_index_2 = -(len(sorted_list) / 2) - 1
# Divide middle values by 2 to get average (mean).
mid_index_1 = len(sorted_list) // 2
mid_index_2 = (len(sorted_list) // 2) - 1
med = (sorted_list[mid_index_1] + sorted_list[mid_index_2]) / float(2)
return med # Return makes `else:` unnecessary.
# Number of items is odd.
mid_index = (len(sorted_list) - 1) / 2
# Middle index is median.
med = sorted_list[mid_index]
else:
mid_index = (len(sorted_list) - 1) // 2
med = sorted_list[mid_index]
return med


def main():
"""Call average module to find median of a specific list of numbers."""
print("Odd number of numbers:")
print(median([2, 4, 6, 8, 20, 50, 70]))
print("Even number of numbers:")
print(median([2, 4, 6, 8, 20, 50]))


if __name__ == '__main__':
main()

0 comments on commit 37fbd8c

Please sign in to comment.