2017-04-26 44 views
1

任何人都可以请向我解释为什么这不起作用?我得到的错误消息是:TypeError:列表索引必须是整数或切片,而不是浮点数。Python找到中位数函数错误

def median(lst): 
    s = sorted(lst) 
    l = len(lst)/2 
    if len(lst) % 2 == 0: 
     print((s[l] + s[l-1])/2.0) 
    else: 
     print(s[l]) 
median([3,3,5,6,7,8,1]) 
+1

好...列表索引必须是整数或切片转换lint,而不是浮动。所以强制l是一个整数 – FLab

+1

你将'len(lst)'除以2,这会产生一个浮点数。你可以使用整数除法('//')。 – L3viathan

回答

0

误差计算l

使用运营商/返回实际师即浮点值除以而//只返回商即整数

因此

您应该计算l asfollo WS

l = len(lst) // 2 

或使用

l = int(l) 
+0

如果有帮助,请考虑加大我的回答 – Ani