个人项目作业—wc应用程序

1.Github项目地址:

https://github.com/Vigor-creat/WC.git

2.PSP

PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
Planning 计划    
· Estimate · 估计这个任务需要多少时间 15 15
Development 开发    
· Analysis · 需求分析 (包括学习新技术) 120 140
· Design Spec · 生成设计文档 30 20
· Design Review · 设计复审 (和同事审核设计文档) 20 20
· Coding Standard · 代码规范 (为目前的开发制定合适的规范) 20 20
· Design · 具体设计 50 70
· Coding · 具体编码 120 155
· Code Review · 代码复审 20 25
· Test · 测试(自我测试,修改代码,提交修改) 40 55
Reporting 报告    
· Test Report · 测试报告 40 30
· Size Measurement · 计算工作量 30 20
· Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 30 20
合计   535 590

3.解题思路描述

使用的编程语言:python

功能实现思路:3个基本功能的共同点在于读取文件,先实现读取目标文件再进行各自基本功能的实现。扩展功能-s在于如何判断递归调用是否至底层,并且同一底层级多个文件该如何循环执行目标功能。

4.设计实现过程

功能-c函数:Character_count(file_path)

功能-w函数:Word_count(file_path)

功能-l函数:Line_count(file_path)

功能-s函数:get_file_path(dir_name)、get_file_name(dir_name)

调用-s函数获得各个文件地址后再将地址传给-c、-w、-l函数,实现相应的功能
 
5.代码说明
 
 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 import re
 4 import os
 5 
 6 
 7 #基本功能
 8 
 9 # 功能c
10 def Character_count(file_path):  # 统计字符数
11 
12     file = open(file_path, 'r', encoding='utf-8') 
13 
14     character_count = str(len(file.read())) #file.read()将文件全部数据作为字符串返回,包括换行符。
15 
16     return character_count
17 
18 
19 
20 #功能w
21 def Word_count(file_path):  # 统计单词数
22 
23     with open(file_path, 'r', encoding = 'utf-8') as f:
24 
25         flie_dict = {} # 读取文件后得到一个可迭代对象file_dict。
26         
27         word_count = 0
28 
29         for line in f.readlines():
30 
31             array_match = re.findall('[a-zA-Z]+', line) # 正则表达式re.findall作用返回line中的字符串,并组成一个新的数组。
32 
33             word_count = len(array_match) + word_count # 将每一行构建的数组的元素值累加。
34 
35     return word_count
36 
37 
38 
39 #功能l
40 def Line_count(file_path): # 统计行数
41 
42     file = open(file_path, 'r', encoding = 'utf-8') # r只读,w可写,a追加。
43 
44     lines = len(file.readlines()) # file.readlines()读取文件所有内容,按行为单位放到一个列表中,返回list类型。
45 
46     return lines
47 
48 
49 #扩展功能
50 
51 #功能s
52 def get_file_path(dir_name): # 获取测试文件夹下所有文件地址
53 
54     list_path = [] # 创建一个地址列表存储测试文件夹下所有文件地址   
55 
56     for root, dirs, files in os.walk(dir_name): 
57 
58         for file in files:  
59 
60             path = os.path.join(root, file)
61             
62             list_path.append(path) # list_path.append()函数用于添加列表元素
63 
64     return list_path
65 
66 def get_file_name(dir_name): 
67 
68     list_file_name = [] # 创建一个文件名列表存储测试文件夹下所有文件对应的文件名
69 
70     for root, dirs, files in os.walk(dir_name): 
71 
72         for file in files:  
73 
74             list_file_name.append(file)  
75 
76     return list_file_name
77 
78 
79 if __name__ == "__main__":    #主函数  
80 
81     dir_path = input('请输入文件夹路径:') 
82 
83     list_path = get_file_path(dir_path)
84 
85     list_file_name = get_file_name(dir_path)
86 
87     for i in range(len(list_path)):
88         
89         print('文件%s中的字符数:%s' % (list_file_name[i], Character_count(list_path[i])))
90 
91         print('文件%s中的单词数:%d' % (list_file_name[i], Word_count(list_path[i])))
92 
93         print('文件%s中的行数:%d\n' % (list_file_name[i], Line_count(list_path[i])))
6.测试运行
 
测试文件夹内文件目录:
 
 
测试结果:
 
7.项目小结
 
由于只是初步学习python语言,很多内置函数的功能和使用方法并没有掌握,导致在编写代码时出现大量的错误,需要重新搜索相关知识点,学习如何使用,导致花费了大量的时间。除此之外,对于python语言,仍存在相当多的知识盲区,暂时无法解决拓展功能-a以及高级功能。

猜你喜欢

转载自www.cnblogs.com/Vigor-0726/p/12501151.html