最后一直坚持这一点而且为了我的生命找不到什么是错的。所以有问题的练习是:
编写一个名为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
答案 0 :(得分:2)
打开Python 2 REPL并尝试以下操作:
>>> (4+5)/2
4
您可以使用2.0
强制浮动除法。
>>> (4+5)/2.0
4.5
在Python 3中,第一个示例将生成4.5
,这将解释CodeCademy与其他站点之间的差异。
您还可以看到添加以下导入是否使您的代码适用于CodeCademy:
from __future__ import division
答案 1 :(得分:1)
首先投射为浮动。 float((x[start-1] + x[start]))/2
答案 2 :(得分:0)
只是一个小错误
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.0
return median
else:
start = x_len // 2
median = x[start]
return median
两个int的除法总是一个int。你应该把一个部分改成浮动
答案 3 :(得分:0)
def median(a):
ordered = sorted(a)
length = len(a)
return float((ordered[length/2] + ordered[-(length+1)/2]))/2