以列表作为输入,return中值
Take a list as an input and return the median value
最后一段时间一直停留在这个问题上,我这辈子都找不到问题所在。所以有问题的练习是:
Write a function called median that takes a list as an input and returns the median value of the list. For example: median([1,1,2])
should return 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 REPL 并尝试以下操作:
>>> (4+5)/2
4
您可以使用 2.0
.
强制进行浮点数除法
>>> (4+5)/2.0
4.5
在 Python 3 中,第一个示例将生成 4.5
,这将说明 CodeCademy 与其他站点之间的差异。
您还可以查看添加以下导入是否会使您的代码在 CodeCademy 上运行:
from __future__ import division
首先转换为浮点数。 float((x[start-1] + x[start]))/2
只是一个小错误
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
两个整数相除总是一个整数。您应该将一部分更改为 float
def median(a):
ordered = sorted(a)
length = len(a)
return float((ordered[length/2] + ordered[-(length+1)/2]))/2
最后一段时间一直停留在这个问题上,我这辈子都找不到问题所在。所以有问题的练习是:
Write a function called median that takes a list as an input and returns the median value of the list. For example:
median([1,1,2])
should return 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 REPL 并尝试以下操作:
>>> (4+5)/2
4
您可以使用 2.0
.
>>> (4+5)/2.0
4.5
在 Python 3 中,第一个示例将生成 4.5
,这将说明 CodeCademy 与其他站点之间的差异。
您还可以查看添加以下导入是否会使您的代码在 CodeCademy 上运行:
from __future__ import division
首先转换为浮点数。 float((x[start-1] + x[start]))/2
只是一个小错误
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
两个整数相除总是一个整数。您应该将一部分更改为 float
def median(a):
ordered = sorted(a)
length = len(a)
return float((ordered[length/2] + ordered[-(length+1)/2]))/2