结队_wordcount

合作者

  201631062227,201631054210

代码地址

  https://gitee.com/e_minem/first_homework

本次作业链接地址

  https://edu.cnblogs.com/campus/xnsy/2018Systemanalysisanddesign/homework/2188


 

PSP表格

 PSP2.1 PSP阶段

预估耗时

(分钟)

实际耗时

(分钟)

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

互相审查代码

  该程序我与队员共同完成,在审查阶段对代码进行检查,未发现明确bug。

设计过程

  该程序主要设计思想是对每行代码进行划分,统计非空行的个数,每行单词的个数,每行的长度(字符数)。

  算法实现:用python仅需要一个循环便解决了这类问题。

代码说明

复制代码
import sys
import os
gpus = sys.argv[2]
#gpus = [int(gpus.split(','))]
batch_size = sys.argv[1]
file_name=gpus
line_count=0
word_count=0
character_count=0
with open(file_name,'r',encoding='utf-8') as f:
    for line in f:
        if line.strip()=='':
            continue
        word=line.split()
        line_count+=1
        word_count+=len(word)
        character_count+=len(line)
if batch_size=='-c':
    print('%s,字符数:%d'% (file_name,character_count))
elif batch_size=='-w':
    print('%s,单词数:%d'%(file_name,word_count))
elif batch_size=='-l':
    print('%s,行数:%d'%(file_name,line_count))
elif batch_size == '-o':
    try:
        f = open("result.txt", 'w+')
        f.write('%s: 字母数:%s\n单词数:%s\n行数:%s' % (file_name, character_count, word_count, line_count))
    except Exception as err:
        print(err)
    finally:
        f.close()
else:
    print("karma is bitch")
复制代码

  该程序代码十分简洁归功于python这门语言的强大

  首先导入的两个包 一个是sys,主要用来传递参数用。另一个是os,用来输出结果到文件上。

  sys从命令行读取命令,该命令是字符串的形式,共有两个参数一个是关于执行的操作参数,例如-w,-l等,一个是目标文件的名称,例如doupan.py:

  获取目标文件的代码主要是:

复制代码
with open(file_name,'r',encoding='utf-8') as f:
    for line in f:
        if line.strip()=='':
            continue
        word=line.split()
        line_count+=1
        word_count+=len(word)
        character_count+=len(line)
复制代码

  我们首先打开目标文件,再从目标文件中以行为单位读取。

  如果这一行是空值的话就跳过,如果不是的话就进行相应的计数。这是一个必要的步骤不然行数会多算。

  len()函数和split()函数都使统计变得十分简单。

 

  最后我们根据从命令行读取的第一个参数判断要返回的形式,关键代码如下:

复制代码
if batch_size=='-c':
    print('%s,字符数:%d'% (file_name,character_count))
elif batch_size=='-w':
    print('%s,单词数:%d'%(file_name,word_count))
elif batch_size=='-l':
    print('%s,行数:%d'%(file_name,line_count))
elif batch_size == '-o':
    try:
        f = open("result.txt", 'w+')
        f.write('%s: 字母数:%s\n单词数:%s\n行数:%s' % (file_name, character_count, word_count, line_count))
    except Exception as err:
        print(err)
    finally:
        f.close()
else:
    print("karma is bitch")
复制代码

  我们还需将py文件生成exe可执行文件 只需要在命令行如下操作:

  pyinstaller -F wc.py 

 

  测试运行的效果图如下:

总结

     在这次的结队编程项目中,我感受到了团队的强大,相比于个体,团队可以让思维更加缜密,合作开发的效率也会更高。

  这是我们的第一次合作,相对来说还不够默契,但是我相信我们在以后的学习生涯中会做得更好,把团队的效率更加合理的利用起来。

  这一次的项目总的来说难度不大,但是让我们深刻的体会到了团队的强大,熟悉了程序的一整套开发流程。

  经过了几次优化设计,对于程序的开发也更加的得心应手,在以后的学习中,我们会不断的改进与反思。

posted @ 2018-10-17 20:28  乐天童子  阅读(246)  评论(0编辑  收藏  举报