こん○○は! PHPerです。
今日も、CheckIOにチャレンジします。ちなみにCheckIOのミッションの解答画面はこのようにIDEモドキになっています。かっこいい!
コードを入力して画面上のRun&Checkを押します。 実行エラーの場合は、画面左下にエラーメッセージがでます。 実行できてもテストに失敗すると、画面右に失敗したテストの結果がでます。 成功すると、画面右にその旨が表示されます。
さて、今回の問題は、を求めるというのものでした。ミッション② 整数型要素のリストの中央値
ひとまず、ソートして、要素数が偶数なら真ん中の要素2つの平均値を。奇数なら真ん中の要素1つの値を返すという、コードを書いてみます。Python list sortで検索してみたら、listオブジェクトのsortメソッドでソートできるようです。さっそく勢いよく書いてみました。
def checkio(data):
sorted = data.sort()
l = len(sorted)
if l % 2 == 0:
return (sorted[l / 2 - 1] + sorted[l / 2])/2
else:
return sorted[(l -1)/2]
結果は失敗・・・。
よく調べたら、sortは、オブジェクト自体をソートさせるメソッドで戻り値はないようです。ポカミスでしたので、修正。
def checkio(data):
data.sort()
l = len(data)
if l % 2 == 0:
return (data[l / 2 - 1] + data[l / 2])/2
else:
return data[(l -1)/2]
こちらは、実行できましたが、テストに失敗。
よく考えると、要素は整数型なんで、ただ除算すると整数に丸められてしまいますね。Python 型変換で調べてみたところ、float関数で浮動小数点型に変換できるようです。
def checkio(data):
data.sort()
l = len(data)
if l % 2 == 0:
return (float(data[l / 2 - 1]) + data[l / 2])/2
else:
return data[(l -1)/2]
これでパス!
ただ、なんかダサイコードですね・・・。