对数字进行升序排列
如果数字列表长度是奇数,则列表中间的数字是中位数;
如果数字列表长度是偶数,则取两个中间数的均值作为中位数。
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))