博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软工作业-wc(Python实现)
阅读量:5148 次
发布时间:2019-06-13

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

GitHub地址:

PSP2.1

Personal Software Process Stages

预估耗时(分钟)

实际耗时(分钟)

Planning

计划

 30  40

· Estimate

· 估计这个任务需要多少时间

 30  30

Development

开发

 240 300

· Analysis

· 需求分析 (包括学习新技术)

 60  55

· Design Spec

· 生成设计文档

 60  70

· Design Review

· 设计复审 (和同事审核设计文档)

 60  50

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

 60 50

· Design

· 具体设计

 60  50

· Coding

· 具体编码

 60  90

· Code Review

· 代码复审

 60  120

· Test

· 测试(自我测试,修改代码,提交修改)

 60  100

Reporting

报告

 30  30

· Test Report

· 测试报告

 30  30

· Size Measurement

· 计算工作量

 30  30

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

 30  30

合计

   900  1075

 

基本功能列表:

  1. wordCounter.exe -c file.c //返回文件 file.c 的字符数
  2. wordCounter.exe -w file.c //返回文件 file.c 的词的数目
  3. wordCounter.exe -l file.c //返回文件 file.c 的行数

功能说明:

wc.exe 是一个常见的工具,它能统计文本文件的字符数、单词数和行数。

这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数、单词数和行数。

解题思路:

最近在学习Python,刚好学过argparse模块,于是便用argparse模块来实现用命令行统计文本文件的字符数、单词数和行数。

一个主函数一个count函数,count函数用read()读取文本文件,再用len()计算字符数、split()算单词数、for-in遍历计算行数;

主函数调用count函数并输出结果。这就实现了一个非常简单的wc程序。

关键代码:

下面是刚学会不久的argparse模块:

#argparse模块,用于处理命令行参数import argparseparser = argparse.ArgumentParser(description="wc.exe")            parser.add_argument("-c",                      dest="Chars",                     help="count chars")  parser.add_argument("-w",                      dest="Words",                     help="count words") parser.add_argument("-l",                      dest="Lines",                     help="count lines")                                                                                    args = parser.parse_args()
下面是用于计算的get_Count()函数
i=0#全局变量,用于判断该返回哪个数def get_Count(args):#用于计算出字符数、单词数和行数    global i    if i==1:        chars=0        with open(args,'r')as f:            data = f.read()            chars = len(data)        return chars#返回字符数    if i==2:        words=0        with open(args,'r')as f:            data = f.read()            words = len(data.split())        return words#返回单词数    if i==3:        lines=0        with open(args,'r')as f:            for Lines in f:                lines+=1        return lines#返回行数

下面是主函数,用于调用get_Count函数和输出结果

def main():#用于调用get_Count函数和输出结果    global i    if args.Chars:        i=1        c=get_Count(args.Chars)        print('文本的字符数:',c)    if args.Words:        i=2        w=get_Count(args.Words)        print('文本的词数:',w)    if args.Lines:        i=3        l=get_Count(args.Lines)        print('文本的行数:',l)if __name__ == '__main__':    main()

测试运行:

1.空文件:

2.只有一个字符的文件:

3.只有一个词的文件:

4.只有一行的文件:

5.一个典型的源文件:

项目小结:

项目花费时间最多的是开发和修改代码,一开始写的代码错漏百出,经过不断的测试和修改才最终完成了这个程序。

由于以前没怎么注意写注释的问题(其实就是懒),这次也是借鉴了别人写的注释,才完成了属于自己代码的注释,以后坚持写注释养成好习惯。

当初因为Python的简洁而有了学习的想法,而这次作业则给了我这样一次锻炼自己的机会,同时,这也是我第一次写博客和第一次使用GitHub,通过这次作业,我得到了很多宝贵的经验。

转载于:https://www.cnblogs.com/busizzzz/p/9638286.html

你可能感兴趣的文章
IP 地址分类
查看>>
国家地区域名
查看>>
2018/3/26 省选模拟赛 60分
查看>>
201521123060 《Java程序设计》第5周学习总结
查看>>
Linux驱动程序学习备忘之六
查看>>
使用 Unity(二):配置 Unity 、读取配置信息和获取对象
查看>>
导出数据库中所有的对象到指定的目录bcp xp_cmdshell
查看>>
LNMP环境搭建
查看>>
你应该掌握的四种参数估计技术
查看>>
【计算机】DMA原理1
查看>>
百度前端学院-基础学院-第20到21天
查看>>
c#之冒泡排序的三种实现和性能分析
查看>>
订单删除,增加订单,巩固表单特定用法
查看>>
Linux命令之---nl
查看>>
nginx + uwsgi 跑python应用
查看>>
asp.net通过基类实现统一脚本和样式的管理
查看>>
『转』Bitdefender Internet Security 2013 – 免费1年
查看>>
pytorch搭建神经网络-第一篇博客
查看>>
Sublime Text 3 快捷键总结(拿走)
查看>>
return,break与continue的区别
查看>>