head first python 第六章

用dict来实现内容~

值得注意的内容有:dict声明,赋值,遍历。list.pop(0)取链表头的值

import os
os.chdir('D:\python\hfpy_ch6_data')
def cleanTime(s):
        if '-' in s:
            (min,sec)=s.split('-')
            return (min+'.'+sec)
        if ':' in s:
            (min,sec)=s.split(':')
            return (min+'.'+sec)
        if '.' in s:
            return s

def getFileDate(file_s):
    try:
        with open(file_s,'r') as file_i:
            file_data=file_i.readline().strip('\n').split(',')
            return 
          {'name':file_data.pop(0),'birthday':file_data.pop(0),
                    'data':(sorted(set([cleanTime(s) for s in file_data])))[0:3]}
 #list.pop 用法~        
    except IOError as err:
        print(str(err))


james=getFileDate('james2.txt')
//#dict的访问
print(james['data'])

#dict的遍历
for i in james:
    print ("james[%s]=" %i,james[i])

for (k,v) in james.items():
    print(k,end=':')
    print(v)
#iteritems在这一版依然没有了

用类来实现封装

一个是类型方法 所有的。。。都带self。这跟其他的都不一样哦!就是这个问题啦~
还有一点构造函数的写法。。。init

import os
os.chdir('D:\python\hfpy_ch6_data')


def cleanTime(s):
        if '-' in s:
            (min,sec)=s.split('-')
            return (min+'.'+sec)
        if ':' in s:
            (min,sec)=s.split(':')
            return (min+'.'+sec)
        if '.' in s:
            return s

class Athlete:
    def __init__(self,bth,name,list_data):
        self.list_data=list_data
        self.name=name
        self.bth=bth
    def getTop3(self):
        return self.list_data[0:3]



def getFileDate(file_s):
    try:
        with open(file_s,'r') as file_i:
            file_data=file_i.readline().strip('\n').split(',')
            return Athlete(file_data.pop(0),file_data.pop(0),(sorted(set([cleanTime(s) for s in file_data]))))  
    except IOError as err:
        print(str(err))


james=getFileDate('james2.txt')

print(james.getTop3())

用继承list来实现

1.下面两种基类的初始化方法都对。
2.开始以为用 super(swift)..没想到直接用的基类名~ 新奇

import os
os.chdir('D:\python\hfpy_ch6_data')
def cleanTime(s):
        if '-' in s:
            (min,sec)=s.split('-')
            return (min+'.'+sec)
        if ':' in s:
            (min,sec)=s.split(':')
            return (min+'.'+sec)
        if '.' in s:
            return s

class Athlete(list):
    def __init__(self,bth,name,list_data=[]):
        list.__init__([])
        self.extend(list_data)
#这里两种继承初始化基类的方法都对~
##        list.__init__(self,list_data)
        self.name=name
        self.bth=bth

def getFileDate(file_s):
    try:
        with open(file_s,'r') as file_i:
            file_data=file_i.readline().strip('\n').split(',')
            return Athlete(file_data.pop(0),file_data.pop(0),(sorted(set([cleanTime(s) for s in file_data]))))  
    except IOError as err:
        print(str(err))

james=getFileDate('james2.txt')
print(james[0:3])
print(james)

语法风格上javascript swift python还挺相似的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值