2018年5月22日火曜日

開発環境

Pythonからはじめる数学入門 (Amit Saha (著)、黒川 利明 (翻訳)、オライリージャパン)の2章(データを統計量で記述する)、3.9(プログラミングチャレンジ)、問題3-4(百分位を求める)を取り組んでみる。

コード(Emacs)

Python 3

#!/usr/bin/env python3


def percentile(data, p):
    data = sorted(data)
    n = len(data)
    i = n * p / 100 + 0.5
    if i.is_integer():
        return data[int(i) - 1]
    k = int(i)
    f = i - k
    return (1 - f) * data[k - 1] + f * data[k]


def read_data(filename):
    with open(filename) as f:
        nums = [float(line) for line in f]

    return nums


if __name__ == '__main__':
    data = [5, 1, 9, 3, 14, 9, 7]
    print(percentile(data, 50))
    print(percentile(data, 25))
    filename = 'marks.txt'
    data = read_data(filename)
    while True:
        p = input('百分位: ')
        if p == 'q':
            break
        p = float(p)
        print(percentile(data, p))

入出力結果(Terminal, Jupyter(IPython))

$ ./sample4.py
7
3.5
百分位: 50
16.5
百分位: 25
14.25
百分位: q
$

0 コメント:

コメントを投稿