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

基本功能列表:

  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 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实现)的更多相关文章

  1. 软工作业-Wc

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

  2. 软工作业-----Alpha版本第一周小结

            软工作业-----Alpha版本第一周小结   Part1.第一周周计划记录 姓名 学号 周前计划安排 每周工作记录 自我打分 yrz(队长) 1417 1.进行任务分析 2.任务分配 ...

  3. [软工作业]-软件案例分析-CSDN

    [软工作业]-软件案例分析-CSDN(app) 项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 个人博客作业-软件案例分析 我在这个课程的目标是 ...

  4. BUAA2020软工作业——提问回顾与个人总结

    项目 内容 这个作业属于哪个课程 2020春季计算机学院软件工程(罗杰 任健) 这个作业的要求在哪里 提问回顾与个人总结 我在这个课程的目标是 进一步提高自己的编码能力,工程能力 这个作业在哪个具体方 ...

  5. 【软工作业&思考】关于软工的一些概念性理解暨第一次阅读作业

    概述 项目 内容 本次作业所属课程 2019BUAA软件工程 周二班 本次作业要求 第1次个人作业当然,比这个更重要百倍的还是实实在在的思考,这也是标题如此命名的原因 我在本课程的目标 在原有实践经验 ...

  6. 软工作业No.3--团队作业:甜美女孩出击!

    队名:甜美女孩 队员包括: 姓名 学号 身份 曾祎祺 3216005211 队长 邓画月 3216005212 队员 何颖琪 3216005213 队员 梁沛诗 3216005214 队员 梁子君 3 ...

  7. 软工作业No.1。Java实现WC.exe

    网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...

  8. 软工作业1—java实现wc.exe

    github项目地址 https://github.com/liyizhu/wc.exe WC 项目要求 基本功能列表: wc.exe -c file.c     //返回文件 file.c 的字符数 ...

  9. 软工作业1:wc.exe项目开发(java)

    Github地址:https://github.com/Zzhaomin/learngit 项目相关要求 : wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个 ...

随机推荐

  1. 设置EditText明文切换

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mingyue_1128/article/details/37651793 if (!isChecke ...

  2. web应用与web框架(Day65)

    Web应用 对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 import socket def handle_request(client): ...

  3. day3-set集合

    set是一个无序且不重复的元素集合 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3 ...

  4. Python(面向对象3 ——实例)

    这个小东西包括了最近学习的,包括模块.包.序列化.继承.派生.组合的应用举例.整体架构如图: bin是程序入口,core包括了几个主要逻辑,main是主架构,login包括登录功能,register包 ...

  5. HZNUOJ 2508:双峰插云

    我们注意到总的颜色种类只有200,故我们可以先处理出所有云朵中每一种颜色有多少朵云朵拥有,此处我们约定用$cnt[] 表示$ 然后暴力枚举将哪朵云分给老薛,记录三个临时变量$Max_{kk}, Max ...

  6. HDOJ 1257 最少拦截系统 【DP】

    HDOJ 1257 最少拦截系统 [DP] Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...

  7. Educational Codeforces Round 11A. Co-prime Array 数学

    地址:http://codeforces.com/contest/660/problem/A 题目: A. Co-prime Array time limit per test 1 second me ...

  8. Apache 配置参数

    参数说明 1.Global Environment 全局环境配置,决定Apache服务器的全局参数3.Virtual Hosts—虚拟主机,虚拟主机不能与Main Server主服务器共存,当启用了虚 ...

  9. 《网络攻防》 MSF基础应用

    20145224陈颢文 <网络攻防>MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode: exploit:攻击手段,是能使攻击武器(payloa ...

  10. Win32 API编程:网络编程在设置WSAAsyncSelect模型后connect的返回值问题

    通过WSAAsyncSelect()可以设置非阻塞异步套接字 ::WSAAsyncSelect(s, hDlg, WM_SOCKET, FD_CONNECT | FD_CLOSE | FD_WRITE ...