问题:
编写函数,接收任意数量的整数作为参数,返回一个元组,元组的第一个元素是所有参数的中位数,第二个元素是所有小于中位数参数的平均值,第三个元素是所有大于中位数参数的平均值。
小白的解答:
def fun(x):
L=[]
B=[]
lst=[]
#先排序
x.sort()
print(x)
#求中位数
#当输入的数字个数为奇数的时候,中位数下标为(n+1)/2
length=len(x)
if length%2==1:
middleNum=x[((length+1)//2)-1]
#当输入的数字个数为奇数的时候,中位数下标为(n+1)/2
else:
#当输入的数字个数为偶数的时候,中位数为(x[n/2-1]+x[(n+1)/2-1])/2
middleNum=(x[(length//2)-1]+x[((length//2)+1)-1])/2
#遍历数组,看看哪些比中位数大哪些比中位数
lst.append(middleNum)
for v in x:
if v<middleNum:
L.append(v)
if v>middleNum:
B.append(v)
#小于中位数的数字的平均数
L_averageNum=sum(L)/len(L)
#大于中位数的数字的平均数
B_averageNum=sum(B)/len(B)
lst.append(L_averageNum)
lst.append(B_averageNum)
print(lst)
x=eval(input("Please input a list:"))
fun(x)
测试结果: