以列表作为输入并返回中值

2024-04-20 10:36:54 发布

您现在位置:Python中文网/ 问答频道 /正文

最后一段时间被困在这上面,我一辈子都找不到问题所在。所以我们要讨论的是:

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.

我在codeadamy上做这个,它一直告诉我它得到的答案是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

Tags: the代码aninputlenreturnthatas
3条回答

打开Python 2 REPL并尝试以下操作:

>>> (4+5)/2
4

您可以使用2.0强制浮点除法。在

^{pr2}$

在python3中,第一个示例将生成4.5,这将解释CodeCademy和其他站点之间的差异。在

还可以查看添加以下导入是否可以使代码在CodeCademy上工作:

from __future__ import division

只是一个小错误

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((x[start-1] + x[start]))/2

相关问题 更多 >