简单平均值返回“不正确”或不值,值

时间:2017-06-12 11:00:02

标签: python python-2.7

python 2.7:

def median(lista):
    lista.sort()
    print(lista)
    x = len(lista)
    if x == 1:
        return lista[0]
    elif len(lista) % 2 != 0:
        return lista[((x-1)/2)]
    else:
        y = lista[(x / 2) - 1]
        z = lista[(x / 2)]
        print (y,z)
        return (y + z) / 2

print(median([1,6,3,4,2,5]))

显示:

[1, 2, 3, 4, 5, 6]
(3, 4)
3
None

为什么不3.5?

谢谢你!

2 个答案:

答案 0 :(得分:5)

只需返回sum / 2.0而不是sum / 2

默认情况下,除非明确说明,否则答案将为int。

答案 1 :(得分:1)

@Nick M的回答为您提供了解决方案,但我想补充一些解释。

在Python中,数字有不同的变量类型,最重要的是intfloat

type(1)
>>> int
type(1.0)
>>> float

当您使用整数(int类型的变量)进行操作时,您得到的结果类型为int

5 / 2
>>> 2

你可以将整数和浮点数混合在一起,发生类型强制,并且整数在内部转换为浮点数,结果得到一个浮点数:

5 / 2.0
>>> 2.5

您还可以使用方法int()float()显式转换变量类型:

int(1.0)
>>> 1
float(1)
>>> 1.0

我希望这有助于您更好地理解。

编辑:Python 2.7中数字类型的官方文档: https://docs.python.org/2/library/stdtypes.html#numeric-types-int-float-long-complex