【发布时间】:2016-11-04 18:42:05
【问题描述】:
上次被困在这个问题上,我这辈子都找不到问题所在。所以有问题的练习是:
编写一个名为 median 的函数,该函数将列表作为输入并返回列表的中值。例如:
median([1,1,2])应该返回 1。
我在 codeacadamy 上这样做,它一直告诉我它得到的答案是 4(应该是 4.5,因为那里用来检查我的代码的测试列表是 [4,5,5,4])。为了让事情变得更奇怪,我在 cscircles 网站上的控制台 IDE 上尝试了代码(就像它的感觉一样),结果很好。
def median(y):
x = sorted(y)
x_len = len(x)
if x_len % 2 == 0:
start = x_len // 2
median = (x[start-1] + x[start]) / 2
return median
else:
start = x_len // 2
median = x[start]
return median
【问题讨论】:
-
如果你的输出不能保证是单调的,要找到中值,你需要事先对列表进行排序。此外,Python 2 中的整数除法(正如其他人所提到的)。
-
可能的整数除法。尝试在文件顶部添加 from future 导入部门