開発環境
- OS X Mavericks - Apple(OS)
- Emacs (CUI)、BBEdit - Bare Bones Software, Inc. (GUI) (Text Editor)
- Python (プログラミング言語)
Head First Python (Paul Barry(著)、 O'Reilly Media )のChapter 6(Custom data Objects: Bundling code with data)、EXERCISE(p.207)を解いてみる。
EXERCISE(p.207)
コード(BBEdit)
sample207.py
#!/usr/bin/env python3 #-*- coding: utf-8 -*- def sanitize(time_string): if '-' in time_string: spliter = '-' elif ':' in time_string: spliter = ':' else: return time_string (mins, secs) = time_string.split(spliter) return mins + '.' + secs class Athletes(list): def __init__(self, name, dob=None, times=[]): list.__init__([]) self.name = name self.dob = dob self.extend(times) def top3(self): return sorted(set(sanitize(t) for t in self))[:3] def getCoachData(filename): try: with open(filename) as f: data = f.readline() temp = data.strip().split(',') return Athletes(temp.pop(0), temp.pop(0), temp) except IOError as ioerr: print('File error: {0}'.format(ioerr)) return None for filename in ['sarah2.txt', 'james2.txt', 'julie2.txt', 'mikey2.txt']: athlete = getCoachData(filename) print("{0}'s fastest times are: {1}".format(athlete.name, athlete.top3())) athlete.append("1.31") print("{0}'s fastest times are: {1}".format(athlete.name, athlete.top3())) athlete.extend(['2.22', '1-21', '2:22']) print("{0}'s fastest times are: {1}".format(athlete.name, athlete.top3()))
入出力結果(Terminal)
$ ./sample207.py Sarah Sweeney's fastest times are: ['2.18', '2.21', '2.22'] Sarah Sweeney's fastest times are: ['1.31', '2.18', '2.21'] Sarah Sweeney's fastest times are: ['1.21', '1.31', '2.18'] James Lee's fastest times are: ['2.01', '2.16', '2.22'] James Lee's fastest times are: ['1.31', '2.01', '2.16'] James Lee's fastest times are: ['1.21', '1.31', '2.01'] Julie Jones's fastest times are: ['2.11', '2.23', '2.59'] Julie Jones's fastest times are: ['1.31', '2.11', '2.23'] Julie Jones's fastest times are: ['1.21', '1.31', '2.11'] Mikey McManus's fastest times are: ['2.22', '2.31', '2.38'] Mikey McManus's fastest times are: ['1.31', '2.22', '2.31'] Mikey McManus's fastest times are: ['1.21', '1.31', '2.22'] $
0 コメント:
コメントを投稿