zoukankan      html  css  js  c++  java
  • python练习册 每天一个小程序 第0007题

     1 # -*-coding:utf-8-*-
     2 __author__ = 'Deen'
     3 '''
     4 题目描述:
     5     有个目录,里面是你自己写过的程序,统计一下你写过多少行代码。包括空行和注释,但是要分别列出来。
     6 
     7     根据注释和正常语句的区别,进行筛选计数
     8 '''
     9 
    10 import os
    11 
    12 
    13 # 首先还是获取该目录下所有文件名,返回一个list进行储存
    14 def list_files(dir, wirldcard, recursion):
    15     files_text = list()
    16     exts = wirldcard.split(" ")
    17     files = os.listdir(dir)
    18     for name in files:
    19         fullname = os.path.join(dir, name)
    20         if (os.path.isdir(fullname) & recursion):
    21             list_files(fullname, wirldcard, recursion)
    22         else:
    23             for ext in exts:
    24                 if (name.endswith(ext)):
    25                     files_text.append(fullname)
    26                     break
    27     # print files_text
    28     return files_text
    29 
    30 
    31 def count(file):
    32     blank_num = 0
    33     code_num = 0
    34     annotations_num = 0
    35     line_num = 0
    36     annotations_nums = list()
    37     with open(file) as fp:
    38         for line in fp.readlines():
    39             line_num += 1
    40             line = line.strip('
    ')
    41             if '#' in line:
    42                 annotations_num += 1
    43             if "'''" in line:
    44                 annotations_nums.append(line_num)
    45             elif len(line) > 0:
    46                 code_num += 1
    47             else:
    48                 blank_num += 1
    49 
    50         fp.close()
    51 
    52     j = 0
    53     result = 0
    54     for i in annotations_nums:
    55         j += 1
    56         if j % 2 == 0:
    57             result += int(i) - annotations_nums[j - 2]
    58     return code_num, annotations_num + result + 1, blank_num
    59 
    60 
    61 if __name__ == '__main__':
    62     files = list_files('G://code')
    63     for file in files:
    64         count_result = count(file)
    65         dic = dict(zip(['code_num', 'annotations_num', 'blank_num'], list(count_result)))
    66         print dic
  • 相关阅读:
    204. Count Primes (Integer)
    203. Remove Linked List Elements (List)
    202. Happy Number (INT)
    201. Bitwise AND of Numbers Range (Bit)
    200. Number of Islands (Graph)
    199. Binary Tree Right Side View (Tree, Stack)
    198. House Robber(Array; DP)
    191. Number of 1 Bits (Int; Bit)
    190. Reverse Bits (Int; Bit)
    189. Rotate Array(Array)
  • 原文地址:https://www.cnblogs.com/deen-/p/7159120.html
Copyright © 2011-2022 走看看