当前位置:编程学习 > python >>

可爱的python课后习题(二)

1,结合grep的实例,考虑处理子目录的情况:
[html]
#!/usr/bin/python 
#coding=utf-8 
#filename:cdcGrep.py 
import os 
def cdcGreper(cdcpath,keyword): 
        filelist=os.listdir(cdcpath) 
        for cdc in filelist: 
                if os.path.isdir(cdc): 
                        filename=cdcpath+os.sep+cdc 
                        print '%s 是子目录 ' % filename 
                        cdcGreper(filename,keyword) 
                        print '执行迭代函数' 
                elif '.txt' in cdc: 
                        print '找到目标文件,准备读取' 
                        cdcfile=open(cdcpath+os.sep+cdc) 
                        for line in cdcfile.readlines(): 
                                if keyword in line: 
                                        print line 
if __name__=='__main__': 
        cdc=cdcGreper('/home/zhouqian/python','test') 
结果显示:
[html]
zhouqian@zhou:~/python$ python cdcGrep.py 
找到目标文件,准备读取 
./ ['class'] ['getoptTest.py', 'value_keys.py', 'text.txt', 'cdctool.py', 'test.txt', 'cdctoolTest.py', 'cdWalk.py', '.getoptTest.py.swp', 'cdWalk.pyc'] 
 
/home/zhouqian/python/class 是子目录  
找到目标文件,准备读取 
test 
 
test 
 
test 
 
执行迭代函数 
找到目标文件,准备读取 
test 
说明下这里面友好多的print,是为了方便调试最笨的方法。
遇到问题总结:
os.sep是一个分割符的标志,
os.path.isdir是验证是否存在子目录的函数
迭代的巧妙运用,
in的使用:
[html] 
>>> a='12345' 
>>> 1 in a 
Traceback (most recent call last): 
  File "<stdin>", line 1, in <module> 
TypeError: 'in <string>' requires string as left operand, not int 
>>> '1' in a 
True 
>>> a=(1,2,3,4) 
>>> 1 in a 
True 
>>> a=['1','2','3'] 
>>> 1 in a 
False 
>>> '1' in a 
True 
>>> a={1:11,2:33} 
>>> 1 in a 
True 
习题2:编写类实现栈的功能----FILO:
[html]
#!/usr/bin/python 
#coding=utf-8 
#filename:MyStack.py 
class MyStacker(object): 
        ''' 
           mystack 自定义栈,主要的操作put(),get(),isEmpty() 
        ''' 
        def __init__(self,max): 
                '''初始化栈头指针和清空栈''' 
                self.head=-1 
                self.max=max 
                self.stack=list()#这里使用list列表来存储数据 
                for i in range(self.max): 
                        self.stack.append(0)#这里是初始化stack的长度,也就是分配存储空间 
        def put(self,item): 
                #首先判断是否超出了栈的长度 
                if self.head>=self.max: 
                        return '栈已满,请先删除部分数据' 
                else: 
                        self.head+=1 
                        self.stack[self.head]=item 
                        print 'put %s successfully' %item 
        def get(self): 
                print '进入get函数中' 
                if self.head<0: 
                        return '栈已空,请先插入数据' 
                else: 
                        print '判断通过' 
                        self.head-=1 
                        print self.head 
                        return self.stack[self.head+1]#此处这

补充:Web开发 , Python ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,