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?
谢谢你!答案 0 :(得分:5)
只需返回sum / 2.0而不是sum / 2
默认情况下,除非明确说明,否则答案将为int。
答案 1 :(得分:1)
@Nick M的回答为您提供了解决方案,但我想补充一些解释。
在Python中,数字有不同的变量类型,最重要的是int
和float
:
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