码迷,mamicode.com
首页 > 其他好文 > 详细

WordCount

时间:2018-03-23 01:00:08      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:htm   ret   ann   /word   open   很多   return   test   需求分析   

github地址:

 

https://github.com/inewRichard/WordCount

 

 

PSP表格:

                                PSP2.1   PSP

预估耗时

(分钟)


   实际耗时

(分钟)

 Planning  计划  20  10
 Estimate  估计这个任务需要多少时间  30  30
 Development  开发  30  40
 Analysis  需求分析 (包括学习新技术)  60  120
 Design Spec  生成设计文档  30  120
 Design Review  设计复审 (和同事审核设计文档)  60  30
 Coding Standard  代码规范 (为目前的开发制定合适的规范)  20  60
 Design  具体设计  30  100
 Coding  具体编码  300  450
 Code Review  代码复审  60  120
 Test  测试(自我测试,修改代码,提交修改)  120  240
 Reporting  报告  60  120
 Test Report  测试报告  120  120
 Size Measurement  计算工作量  60  60
 Postmortem & Process Improvement Plan  事后总结, 并提出过程改进计划  60  120
   合计  1060  1780

 

 

 

解题思路:

 

要想实现字符和字符串统计等功能,可以利用编译技术里有穷状态机转换对输入的字符串进行统计。

 

程序设计实现过程:

 

程序包括 主函数,file_name(文件路径获取),f_c()(字符串统计), f_w()(单词统计), f_l()(行数统计),f_o(结果指定输出),getword(获取停用词).

主要的设计过程就是分支判断,根据各参数的有无情况来分情况进行处理,由于函数间存在相互嵌套调用情况,因此参数的输入必须按照一定顺序。

 

代码说明:

if ‘-s‘ in command:
    if ‘-o‘ in command:
        if ‘-e‘ in command:
#获取匹配的文件名 filekind=command[-5] filename=file_name(fileway) filetail=‘.‘ info=0 for i in filekind: if(i==‘.‘): info=1 if(info==1): filetail=filetail+str(i) for f in filename: if filetail in f: signlist=getword(command[-3])#获取停用词表 f_o(command[-1],command,signlist) else: filekind=command[-3] filename=file_name(fileway) filetail=‘.‘ info=0 for i in filekind: if(i==‘.‘): info=1 if(info==1): filetail=filetail+str(i) for f in filename: if filetail in f: signlist=[] f_o(command[-1],command,signlist)

跟据参数输入情况,是否获取递归匹配文件名,是否读取停用词表,然后调用相关函数实现功能

 

 

 

测试设计过程:

 

1.统计字符数的代码:

def f_c(filename):
    f=open(filename,‘r‘)
    count=f.read()
    count=list(count)
    num=len(count)
    return num

 

由于没有路径分支,只需要一个测试用例:

技术分享图片

技术分享图片

路径 输入 预期输出 实际输出
 A->B  test1.txt  23  23

 

 

2.统计单词数:

def f_w(filename,signlist):
    f=open(filename,‘r‘)
    count=f.read()
    count=list(count)
    word=‘‘
    wordlist=[]
    for i in count:
        if(i==‘ ‘):
            if word in signlist:
                word=‘‘
            else:
                wordlist.append(word)
                word=‘‘
        elif(i==‘,‘):
            if word in signlist:
                word=‘‘
            else:
                wordlist.append(word)
                word=‘‘ 
        else:
            word=word+str(i)
    wordlist.append(word)
    num=len(wordlist)
    return num

  有多个路径分支

技术分享图片

 

路径 输入 预期输出 实际输出
A->B->C->F while 0 0
A->B->C->F work 1 1
A->B->D->H while, 0 0
A->B->D->I work, 1 1
A->B->E w 0 0

 

 

 3.统计行数:

def f_l(filename):
    f=open(filename,‘r‘)
    num=0
    s=f.readline()
    while(s!=‘‘):
        num=num+1
        s=f.readline()
    return num

  技术分享图片

 

路径 输入 预期输出 实际输出
A->B->C this is the test! 1 1
A->C   0 0

 

 

 

 

 

参考文献链接

http://www.cnblogs.com/ningjing-zhiyuan/p/8563562.html

 

写完后的感想:

由于对程序测试接触的不多,对于测试的过程有些粗糙,有很多地方没考虑周到,包括测试数据的形式等。总而言之,算是开拓我的知识视野,以后继续努力改进吧!

WordCount

标签:htm   ret   ann   /word   open   很多   return   test   需求分析   

原文地址:https://www.cnblogs.com/zhangweij/p/8608815.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!