[OK]問題は、数値のリストの中央値(中間の数値)を検索するよう求めます。リストに偶数の数字がある場合は、2つの中間の数字の平均を返します。codeacademyのpythonの数学は、int vs floatで割ると変な動作をします。動的に型付けされた/キャストの問題
私はいくつかのコードに出くわしましたが、サイトでは動作しませんが、PyCharmでは動作します。私は、コードアカデミーの学習のpythonのコードの一部が古いので、それは想像(例えばその印刷機能やraw_input()現在は非推奨されている)
下記の注意
def median(ls):
ls = sorted(ls)
length = len(ls)
median = 0.0
temp = 0
if length % 2 == 0:
temp = int(length/2)
median = float (ls[temp-1] + ls[temp])/2 #why is this a problem?
return median
else:
temp=int((length-1)/2)
median = ls[temp]
return median
CodeAcademy
上では動作しません。上記の値は、4.5の代わりに4.0を返します。[4,5,5,4]
ただし、/ 2を以下のように/2.0に変更すると動作します。
def median(ls):
ls = sorted(ls)
length = len(ls)
median = 0.0
temp = 0
if length % 2 == 0:
temp = int(length/2)
median = float (ls[temp-1] + ls[temp])/2.0 #here
return median
else:
temp=int((length-1)/2)
median = ls[temp]
return median
注:上記が正しく4.5私はこの問題を解決する方法を考え出したにも関わらず、そのため、[4,5,5,4]
を通過したとき、私はそれがなぜ起こったか知りたいを返します。両方のコード例が新しいバージョンのPythonで動作するとしても、正しいかクリーナーか、それはなぜですか?