CS圈13 - 编码练习:中间的猴子

时间:2015-09-06 16:36:07

标签: python python-3.x function

我目前正在通过一个名为“计算机科学圈”的网站开展工作。我已经达到问题13,这是关于列表的。

编码练习是:

写一个函数middle(L),它以列表L作为参数,并返回L的中间位置的项目。(为了使中间定义明确,你应该假设L有奇数长度。 ) 例如,调用middle([8,0,100,12,1])应该返回100,因为它正好位于列表的中间。

到目前为止,我的代码看起来像这样:

def middle(L):
    L = sorted(L)
    n = len(L)
    m = n - 1
    return (L[n/2] + L[m/2] / 2.0)

但是,每次运行代码时,它都会给我一个

TypeError: list indices must be integers, not float

我不完全确定如何更改我的代码,以便它可以根据任务成功运行。

1 个答案:

答案 0 :(得分:1)

运营商/正在执行" true"除法(float),而//是整数除法。

就算法本身而言,您可以简单地将长度缩短一半

def middle(L):
    return L[len(L)//2]

>>> middle([8, 0, 100, 12, 1])
100