開発環境
- 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 コメント:
コメントを投稿