博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
head first python 6 class 扩展
阅读量:6816 次
发布时间:2019-06-26

本文共 3293 字,大约阅读时间需要 10 分钟。

点击(此处)折叠或打开

  1. #!/usr/bin/env python3
  2. # -*- coding:utf-8 -*-
  3. import os
  4. class athlete:
  5.     def __init__(self, athlete_name, athlete_dob=None, athlete_times=[]):
  6.         self.name = athlete_name
  7.         self.dob = athlete_dob
  8.         self.times= athlete_times
  9.     #运动员最好的3组成绩
  10.     def top3(self):
  11.         return(sorted(set([sanitize(time) for time in self.times]))[0:3])
  12.     #为运动员添加一个成绩
  13.     def add_time(self, time_value):
  14.         self.times.append(time_value)
  15.     #为运动员添加一组成绩,使用列表类型.
  16.     def add_times(self, time_list):
  17.         self.times.extend(time_list)
  18. def openfile(filename):
  19.     try:
  20.         #打开文件
  21.         with open(filename) as athlete_file:
  22.             #读取数据
  23.             data = athlete_file.readline()
  24.             value_list= data.strip().split(',')
  25.             username = value_list.pop(0)
  26.             userdob = value_list.pop(0)
  27.             usertimes= value_list
  28.             #返回实例对象
  29.             athlete_instance=athlete(username,userdob,usertimes)
  30.             return(athlete_instance)
  31.     except IOError as ioerr:
  32.         print('File error %s' % ioerr)
  33.         return(None)
  34. #处理字符,转换成m.s格式
  35. def sanitize(time_string):
  36.     if '-' in time_string:
  37.         splitter = '-'
  38.     elif ':' in time_string:
  39.         splitter = ':'
  40.     else:
  41.         return time_string
  42.     (min, sec) = time_string.split(splitter)
  43.     return (min + '.' + sec)
  44. for name in ["james", "julie", "mikey", "sarah"]:
  45.     name = openfile(name+'.txt')
  46.     print(name.name + '的三次最佳成绩是' + str(name.top3()))
  47. talen = athlete('talen')
  48. talen.add_time('3.25')
  49. talen.add_time('3.45')
  50. talen.add_times(['1.30','2.59'])
  51. print(str(talen.top3()))
t@localhost 6$ python3 kelly_c.py
James Lee的三次最佳成绩是['2.01', '2.16', '2.22']
Julie Jones的三次最佳成绩是['2.11', '2.23', '2.59']
Mikey McManus的三次最佳成绩是['2.22', '2.31', '2.38']
Sarah Sweeney的三次最佳成绩是['2.18', '2.21', '2.22']
['1.30', '2.59', '3.25']
继承list类

点击(此处)折叠或打开

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
import os
class athlete:
    def __init__(self, athlete_name, athlete_dob=None, athlete_times=[]):
        self.name = athlete_name
        self.dob = athlete_dob
        self.times= athlete_times
    #运动员最好的3组成绩
    def top3(self):
        return(sorted(set([sanitize(time) for time in self.times]))[0:3])
    #为运动员添加一个成绩
    def add_time(self, time_value):
        self.times.append(time_value)
    #为运动员添加一组成绩,使用列表类型.
    def add_times(self, time_list):
        self.times.extend(time_list)
#使用类继承,继承内置list类
class athletelist(list):
    def __init__(self, a_name, a_dob=None, a_times=[]):
        list.__init__([])
        self.name = a_name
        self.dob = a_dob
        self.extend(a_times)
    def top3(self):
        return(sorted(set([sanitize(t) for t in self]))[0:3])
def openfile(filename):
    try:
        #打开文件
        with open(filename) as athlete_file:
            #读取数据
            data = athlete_file.readline()
            value_list= data.strip().split(',')
            username = value_list.pop(0)
            userdob = value_list.pop(0)
            usertimes= value_list
            #返回实例对象
            athlete_instance=athlete(username,userdob,usertimes)
            return(athlete_instance)
    except IOError as ioerr:
        print('File error %s' % ioerr)
        return(None)
#处理字符,转换成m.s格式
def sanitize(time_string):
    if '-' in time_string:
        splitter = '-'
    elif ':' in time_string:
        splitter = ':'
    else:
        return time_string
    (min, sec) = time_string.split(splitter)
    return (min + '.' + sec)
for name in ["james", "julie", "mikey", "sarah"]:
    name = openfile(name+'.txt')
    print(name.name + '的三次最佳成绩是' + str(name.top3()))
talen = athlete('talen')
talen.add_time('3.25')
talen.add_time('3.45')
talen.add_times(['1.30','2.59'])
print(str(talen.top3()))
ken = athletelist('ken')
#为运动员添加一个成绩
#由于继承list,不需要自己再定义添加方法,直接使用list的方法
ken.append('4.25')
#为运动员添加一组成绩,使用列表类型.
ken.extend(['4.56','6.20','5.20'])
print(ken.top3())

转载地址:http://gxdzl.baihongyu.com/

你可能感兴趣的文章
修改symfony sfDoctrineGuardPlugin验证密码的方法
查看>>
Vbird的Linux私房菜学习笔记之正则表达式-特殊字符
查看>>
数据的作用域
查看>>
js中括号用于自执行测试
查看>>
ssh 公钥 密钥
查看>>
c#设计模式-单例模式
查看>>
Ehcache web cahce 缓存改良版
查看>>
F5集群配置公共irule,解决X-Frame-Options漏洞及host头漏洞
查看>>
mysql 创建日期列之timestamp
查看>>
VMM系列之使用VMM服务器构建 Hyper-V主机(4)
查看>>
详测 Generics Collections TList (7): Items、Contains
查看>>
配置FTP服务器(2) 本地用户下载和上传
查看>>
多线程编程(11) - 多线程同步之 Mutex (互斥对象)[续]
查看>>
【Java每日一题】20161214
查看>>
requireJs 模块化简陋版本
查看>>
我的友情链接
查看>>
How to upgrade vim to version 8 on CentOS 7
查看>>
xcode pod 报import 找不到 pods的支持问题解决方法之一
查看>>
nginx配置让任何文件在浏览器中显示文本text/plain
查看>>
思科路由器×××配置-- 动态 site-to-site ×××(上)
查看>>