開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
初めてのコンピュータサイエンス(Jennifer Campbell、Paul Gries、Jason Montojo、Greg Wilson(著)長尾 高弘(翻訳))の12章(各種ツール)、12.7(練習問題)、12-17.を解いてみる。
12.7(練習問題)、12-17.
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
def mean(values):
total = 0
for value in values:
if type(value) != int and type(value) != float:
raise ValueError('リストに数値以外の要素が含まれている')
total += value
return total / len(values)
def median(values):
l = len(values)
if l == 0:
return None
sorted_l = sorted(values)
n = l // 2
if l % 2 == 0:
return (sorted_l[n - 1] + sorted_l[n]) / 2
return sorted_l[n]
def mode(values):
result = []
n_c = {}
for value in values:
n_c[value] = n_c.get(value, 0) + 1
m = max(n_c.values())
for n, c in n_c.items():
if c == m:
result.append(n)
return result
if __name__ == '__main__':
values1 = list(range(1, 11))
values2 = [1, 'python', 2]
for values in [values1, values2]:
print(values)
try:
print('平均: {0}'.format(mean(values)))
except Exception as err:
print(type(err), err, err.args)
values1 = [5, 1, 4, 2, 3]
values2 = [5, 1, 4, 2, 3, 6]
for values in [values1, values2]:
print(values)
print('中央値: {0}'.format(median(values)))
values = [0, 1, 0, 3, 2, 4, 1]
print(values)
print('最頻値のリスト: {0}'.format(mode(values)))
入出力結果(Terminal)
$ ./sample.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
平均: 5.5
[1, 'python', 2]
<class 'ValueError'> リストに数値以外の要素が含まれている ('リストに数値以外の要素が含まれている',)
[5, 1, 4, 2, 3]
中央値: 3
[5, 1, 4, 2, 3, 6]
中央値: 3.5
[0, 1, 0, 3, 2, 4, 1]
最頻値のリスト: [0, 1]
$
0 コメント:
コメントを投稿