對數字進行升序排列
如果數字列表長度是奇數,則列表中間的數字是中位數;
如果數字列表長度是偶數,則取兩個中間數的均值作爲中位數。
def calculate_median(numbers):
n = len(numbers)
numbers.sort()
if n % 2 == 0:
m1 = n / 2
m2 = n / 2 + 1
m1 = int(m1) - 1
m2 = int(m2) - 1
median = (numbers[m1] + numbers[m2]) / 2
else:
m = (n + 1) / 2
m = int(m) - 1
median = numbers[m]
return median
if __name__ == '__main__':
donations = [100, 60, 70, 900, 100, 200, 500, 500, 503, 600, 1000, 1200]
median = calculate_median(donations)
n = len(donations)
print('Median donation over the last {0} days is {1}'.format(n, median))