我需要这个python 3练习的帮助,以找到列表的中位数。你应该定义并制定自己的功能,这就是我所做的。
EXERCISE:
编写一个函数
middle(L)
,它以列表L
作为参数,并返回L
中间位置的项。 (为了使中间定义明确,您应该假设L
具有奇数长度。)例如,调用middle([8, 0, 100, 12, 1])
应该返回100
,因为它恰好位于中间列表。
这是我的代码:
def middle(a):
a = sorted(a)
l = len(a)
if len(a) % 2 == 0.:
m = (a[int(l / 2)] + a[int(l / 2) - 1]) / 2.
else:
if l < 2:
m = a[0]
else:
m = a[int(l / 2)]
return m
当我在另一个网站上尝试这个时,它起作用了。但是当我把它放在这个网站上时,我得到以下错误:
程序执行时没有崩溃。 平地机说: 中间运行([8,0,100,12,1])...错误:中间([8,0,100,12,1])错误值8,预期100
参数名称为a
而不是L
与错误答案无关,因为我已尝试将其更改为L
。
更新
感谢您的帮助。我在移除A = SORTED(A)
CHUNK时工作了。
答案 0 :(得分:1)
似乎你误读了赋值并写了一个函数来返回中位数,而问题是返回 middle 。如果您删除了a=sorted(a)
它应该有效。
答案 1 :(得分:0)
阅读作业。您只需要返回列表中间的项目。没有排序,没有中位数。你可以假设列表总是有一个奇怪的长度。
def middle(L):
return L[len(L) // 2]