题目来自PythonTip
求中位数
给你一个整数列表L, 输出L的中位数(若结果为小数,则保留一位小数)。
例如: L=[0,1,2,3,4]
则输出:2
l = len(L) #数出列表中有几个元素,将个数放到l里
L.sort() #将列表按升序排列
if l%2 == 0: #如果有偶数个整数
m = (L[int(l/2) - 1] + L[int(l/2)]) / 2 #计算中间两个的平均值,存到m里
print("%.1f" % m) #按一位小数打印m
else: #如果有奇数个整数
m = L[int((l-1)/2)] #将中间那个整数的值存到m里
print(m) #直接打印m
L = sorted(L)
print(L[len(L)//2] if len(L)%2==1 else "%.1f"%(0.5*(L[len(L)//2-1]+L[len(L)//2])))
这道题没有什么特殊的地方,踏踏实实把每一个要求做到就好了。刚开始可以怎么想的就怎么写代码,然后再提炼看有没有可以简化的地方,如果有余力还可以挑战一下写成列表推导式。理论上能应该都可以写成列表推导式的。