首页 > 代码库 > [Head First Python]6. 定制数据对象:打包代码与数据
[Head First Python]6. 定制数据对象:打包代码与数据
相同功能,演进实现
数据文件
sarah2.txt
sarah Sweeney,2002-6-17,2:58,2.58,2:39,2-25,2-55,2:54,2.18,2:55,2:55
1- 返回dict
return({‘Name‘:data_list.pop(0),
‘DOB‘:data_list.pop(0),
‘Time‘:str( sorted( set([sanitize(t) for t in data_list] ) )[0:3])})
1 def sanitize(time_string): 2 if ‘-‘ in time_string: 3 splitter = ‘-‘ 4 elif ‘:‘ in time_string: 5 splitter = ‘:‘ 6 else: 7 return (time_string) 8 9 (mins, secs) = time_string.split(splitter)10 return(mins + ‘.‘ + secs)11 12 def get_coach_data(filename):13 try:14 with open(filename) as f:15 data =http://www.mamicode.com/ f.readline()16 data_list = data.strip().split(‘,‘)17 return({‘Name‘:data_list.pop(0),18 ‘DOB‘:data_list.pop(0),19 ‘Time‘:str( sorted( set([sanitize(t) for t in data_list] ) )[0:3])}) 20 except IOError as err:21 print("file err:" + str(err))22 return(none)23 24 25 julie = get_coach_data(‘julie2.txt‘)26 james = get_coach_data(‘james2.txt‘)27 sarah = get_coach_data(‘sarah2.txt‘)28 mikey = get_coach_data(‘mikey2.txt‘)29 30 print( julie[‘Name‘] + "‘s faster time are:" + julie[‘Time‘])31 print( james[‘Name‘] + "‘s faster time are:" + james[‘Time‘])32 print( sarah[‘Name‘] + "‘s faster time are:" + sarah[‘Time‘])33 print( mikey[‘Name‘] + "‘s faster time are:" + mikey[‘Time‘])
2- 返回类 return ( Athlete(datalist.pop(0), datalist.pop(0), datalist))
1 def sanitize(time_string): 2 if ‘-‘ in time_string: 3 splitter = ‘-‘ 4 elif ‘:‘ in time_string: 5 splitter = ‘:‘ 6 else: 7 return(time_string) 8 9 (mins, secs) = time_string.split(splitter)10 return(mins + "." + secs)11 12 class Athlete:13 def __init__(self, a_name, a_dob = None, a_time = []):14 self.name = a_name15 self.dob = a_dob16 self.times = a_time17 18 def top3(self):19 return( sorted(set([sanitize(t) for t in self.times]))[0:3] )20 21 def add_time(self,time_value):22 self.times.append(time_value)23 24 def add_times(self,list_of_times):25 self.times.extend(list_of_times)26 27 28 def get_coach_data(filename):29 try:30 with open(filename) as f:31 data =http://www.mamicode.com/ f.readline();32 datalist = data.strip().split(‘,‘)33 return ( Athlete(datalist.pop(0), datalist.pop(0), datalist))34 except IOError as err:35 print(‘file err:‘ + str(err))36 return(none)37 38 39 julie = get_coach_data(‘julie2.txt‘)40 james = get_coach_data(‘james2.txt‘)41 sarah = get_coach_data(‘sarah2.txt‘)42 mikey = get_coach_data(‘mikey2.txt‘)43 44 print(julie.name + "‘s faster times are:" + str(julie.top3()))45 print(james.name + "‘s faster times are:" + str(james.top3()))46 print(sarah.name + "‘s faster times are:" + str(sarah.top3()))47 print(mikey.name + "‘s faster times are:" + str(mikey.top3()))48 49 vera = Athlete(‘vera vi‘)50 vera.add_time(‘1.30‘)51 print(vera.top3())52 vera.add_times([‘1.00‘,‘0.3‘,‘1.2‘])53 print(vera.top3())
3- 继承python内置list
1 class Athletelist(list): 2 def __init__(self, a_name, a_dob = None, a_times = []): 3 list.__init__([]) 4 self.name = a_name 5 self.dob = a_dob 6 self.extend(a_times) 7 def top3(self): 8 return( sorted( set([sanitize(t) for t in self] ) )[0:3]) 9 10 def sanitize(time_string):11 if ‘-‘ in time_string:12 splitter = ‘-‘13 elif ‘:‘ in time_string:14 splitter = ‘:‘15 else:16 return(time_string)17 18 (mins, secs) = time_string.split(splitter)19 return(mins + "." + secs)20 21 #vera = Athletelist("vera vi")22 #vera.append(‘1.31‘)23 #print(vera.top3())24 #vera.extend(["1","2","0"])25 #print(vera.top3())26 27 def get_coach_data(filename):28 try:29 with open(filename) as f:30 data =http://www.mamicode.com/ f.readline();31 datalist = data.strip().split(‘,‘)32 return ( Athletelist(datalist.pop(0), datalist.pop(0), datalist))33 except IOError as err:34 print(‘file err:‘ + str(err))35 return(none)36 37 38 julie = get_coach_data(‘julie2.txt‘)39 james = get_coach_data(‘james2.txt‘)40 sarah = get_coach_data(‘sarah2.txt‘)41 mikey = get_coach_data(‘mikey2.txt‘)42 43 print(julie.name + "‘s faster times are:" + str(julie.top3()))44 print(james.name + "‘s faster times are:" + str(james.top3()))45 print(sarah.name + "‘s faster times are:" + str(sarah.top3()))46 print(mikey.name + "‘s faster times are:" + str(mikey.top3()))
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。