软工作业-wc(Python实现)
GitHub地址: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 |
基本功能列表:
- wordCounter.exe -c file.c //返回文件 file.c 的字符数
- wordCounter.exe -w file.c //返回文件 file.c 的词的数目
- 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 argparse
parser = 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,通过这次作业,我得到了很多宝贵的经验。
软工作业-wc(Python实现)的更多相关文章
- 软工作业-Wc
Wc.exe wc.exe是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有wc.exe 的功能,并加以扩充,给出某程序设计语言源文件的字符数.单词数和行 ...
- 软工作业-----Alpha版本第一周小结
软工作业-----Alpha版本第一周小结 Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...
- [软工作业]-软件案例分析-CSDN
[软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...
- BUAA2020软工作业——提问回顾与个人总结
项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...
- 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业
概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...
- 软工作业No.3--团队作业:甜美女孩出击!
队名:甜美女孩 队员包括: 姓名 学号 身份 曾祎祺 3216005211 队长 邓画月 3216005212 队员 何颖琪 3216005213 队员 梁沛诗 3216005214 队员 梁子君 3 ...
- 软工作业No.1。Java实现WC.exe
网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...
- 软工作业1—java实现wc.exe
github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c //返回文件 file.c 的字符数 ...
- 软工作业1:wc.exe项目开发(java)
Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...
随机推荐
- Java io流详解一
原文地址http://www.cnblogs.com/xdp-gacl/p/3634409.html java基础学习总结——流 一.JAVA流式输入/输出原理
- mysql binlog日志的三种模式
1.statement level模式 每一条会修改数据的sql都会记录到master的bin-log中.slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql来再次执行.优 ...
- <context:annotation-config/> 的理解
转载:http://www.cnblogs.com/iuranus/archive/2012/07/19/2599084.html 当我们需要使用BeanPostProcessor时,直接在Sprin ...
- SqlHelper简单实现(通过Expression和反射)8.Sql Server数据处理类
这个类基本上就是调用EntityHelper,ExpressionHelper和ObjectHelper来进行各种完整SQL的拼接操作. using System; using System.Conf ...
- Windows netstat 查看端口、进程占用(转)
本文转自:http://ywsm.iteye.com/blog/510670 目标:在Windows环境下,用netstat命令查看某个端口号是否占用,为哪个进程所占用. 操作:操作分为两步: 1)查 ...
- JS中的正则应用
如果还未掌握正则基础知识可先看另一篇:正则笔记-忘记就来看 创建方法: 直接量语法:/pattern/attributes 创建 RegExp 对象的语法:new RegExp(pattern, at ...
- How to create a notification with NotificationCompat.Builder?AAAA
Ask Question up vote 49 down vote favorite 19 I need to create a simple notification which will be s ...
- uvm的sequence
1,每个sequence都有一个body任务.当一个sequence启动后,会自动执行sequence的body任务,所以在sequence的class中,一定要有一个名为body的task. 此外, ...
- python学习(一)——python与人工智能
最近在朋友圈转起了一张图.抱着试一试的心态,我肝了些课程.都是与python相关的. 课程一:你不知道的python 讲师:王玉杰 (混沌巡洋舰联合创始人 & web ...
- HTML中a标签的锚点
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...