2017-06-12 7 views
1

の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?

ありがとうございました!

答えて

5

ちょうど明示的に述べない限り、答えはint型になり、デフォルトで合計/ 2.0の代わりの合計/ 2

を返します。

+1

はどうもありがとうございました! – costinv

1

@Nick Mからの回答では解決策がありますが、説明を追加したいと思います。

:あなたはまた、タイプ int結果として取得

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

あなたは整数で動作(タイプintの変数):

Pythonでは数字のために別の変数の型は、intfloatである最も重要があります

5/2 
>>> 2 

整数型と浮動小数点型を混在させることができます。型強制が行われ、整数は内部的に浮動小数点数に変換され、浮動小数点数を返しますSULT:私はこれをより良く理解するために役立ちます願ってい

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

5/2.0 
>>> 2.5 

はまた、明示的な方法int()またはfloat()を使用して、変数の型を変換することができます。

EDIT:Pythonの2.7での数値型の公式ドキュメント: https://docs.python.org/2/library/stdtypes.html#numeric-types-int-float-long-complex

+1

Python 2は冗長にするだけで、python 3はフロア分割しません。 – Rosh

+0

@rosh発言いただきありがとうございます。質問はPython 2.7に関するものであり、私の答えのすべてはこのバージョンにのみ関連しています。 – cezar

+0

それは対立していなかったので、あなたは 'python'を入れて、私はそのページのすべてを読まなかった。恥ずかしがらないでください。 – Rosh

関連する問題