def get_times(file_name): #创建一个名为get_times的函数,参数为file_name
times = [] #定义一个空列表,用来存储从文件中取出的一个个代表时间的字符串
try:
with open(file_name) as fdata:
data = fdata.readline() #由于文件中只有一行数据,所以不需要for来迭代
data_list = data.strip().split(',') #方法串联,从左至右执行
for each_time in data_list:
times.append(each_time)
return(times)
except IOError as ioerr:
print('IO Error: ' + str(ioerr))
def sanitize(time):
if ':' in time:
splitter = ':'
(mins, secs) = time.split(splitter)
elif '-' in time:
splitter = '-'
(mins, secs) = time.split(splitter)
else:
return(time) #如果'.' in time,那么函数什么都不做直接返回time
return(mins + '.' + secs) #函数返回经过处理后的数据(没处理的并没被忽略)上边那行已经返回了
2、改进get_times函数:
def get_times(file_name):
times = []
try:
with open(file_name) as fdata:
data = fdata.readline()
data_list = data.strip().split(',')
for each_time in data_list:
clean_time = sanitize(each_time) #调用sanitize函数以格式化每个time值
times.append(clean_time)
return(times)
except IOError as ioerr:
print('IO Error: ' + str(ioerr))
def get_times(file_name):
#times = [] 因为times在下边定义,所以把这里注释掉
try:
with open(file_name) as fdata:
data = fdata.readline()
data_list = data.strip().split(',')
times = [sanitize(each_time) for each_time in data_list] #使用列表推导来取代for迭代中列表的append方法
return(times)
except IOError as ioerr:
print('IO Error: ' + str(ioerr))
def get_top3(times_list):
sorted_times = sorted(times_list)
clean_stimes =[]
for each_time in sorted_times: #迭代排序后的每一个列表值
if not each_time in clean_stimes: #判断此值是否已存在于clean_stimes列表中
clean_stimes.append(each_time)
return(clean_stimes[0:3])