定制数据对象2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# Author kevin_hou
def sanitize(time_string):  #将时间格式化为统一字符串格式
    if '-' in time_string:
        splitter = '-'
    elif ':' in time_string:
        splitter = ':'
    else:
        return(time_string)
    (mins, secs) = time_string.split(splitter)
    return(mins + '.' + secs)
 
class Athlete:  #定义父类
    def __init__(self, a_name, a_dob=None, a_times=[]):
        self.name = a_name
        self.don = a_dob
        self.times = a_times
    def top3(self): #定义筛选前三项子函数
        return (sorted(set([sanitize(t) for t in self.times]))[0:3])
 
    def add_time(self, time_value): #将1个额外的计时值追加到选手的计时数据
        self.times.append(time_value)
 
    def add_times(self, list_of_times): #用1个或多个计时值(提供为1个列表)
        self.times.extend(list_of_times)    #来扩展1个选手的计时数据
 
def get_coah_data(filename):    #打开文件获取数据
    try:
        with open(filename) as f:
            data = f.readline()
        temp1 = data.strip().split(',')
        # return ({'Name': temp1.pop(0),
        #          'DOB': temp1.pop(0),
        #          'Times': str(sorted(set([sanitize(t) for t in temp1]))[0:3])})
        return Athlete(temp1.pop(0), temp1.pop(0), temp1)
    except IOError as ioerr:
        print('File error:' +str(ioerr))
        return(None)
 
james = get_coah_data('james2.txt')
sarah = get_coah_data('sarah2.txt')
# print(james['Name'] + "'s fastest times are:" + james['Times'])
print(james.name + "'s fastest times are:" + str(james.top3()))
#James Lee's fastest times are:[' 2.34', '2.01', '2.22']
print(sarah.name + "'s fastest times are:" + str(sarah.top3()))
#Sarah Sweeney's fastest times are:['2.18', '2.25', '2.39']
 
vera = Athlete('Vera Vi')
vera.add_time('1.31')
print(vera.top3())  #['1.31']
 
vera.add_times(['2.22', "1;21", '2:22'])
print(vera.top3())

  

 

posted @   JRS077  阅读(113)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示