拿到題目後,發現這個作業需要開啟檔案,使用正規表示式匹配,接受命令行引數等操作,於是就有搜尋引擎查詢了許多有關這方面的內容.
整體設計思路是使用命令列引數進行for迴圈,再使用if-elif-else進行匹配,每個命令列引數的實現做成乙個函式
實現了-a -c -l -w 的功能
-l 功能:只需要開啟檔案,然後使用 for迴圈讀取檔案,每讀取一次計數器加一,就能得出結果
def line(f):#計算行數的函式
i =0for line inf:
i+= 1
print("line number is", i)
-c 功能:使用read()函式,再使用len()函式,即可讀取字元數(我認為\n也算是乙個字元)
def character(f):#計算字元數的函式
print("character number is", len(f.read()))
之前想過用正規表示式識別\n,但是後來發現**中也可能包含\n,這樣計數就會出現錯誤
-w 功能:使用正規表示式找出所有的詞數,用findall()返回乙個列表,再用len()計算數量
def word(f):#計算單詞數的函式
w = re.compile("[a-z]+", re.i).findall(f.read())print("word number is",len(w))
-a 基本思路是先判斷是否為空行,再判斷是否為單行注釋,最後判斷是否為注釋塊,都不是則為**行,思路有些繁瑣,而且對檔案中有包含/*, */, //的字串會出現識別錯誤
執行完乙個函式後,檔案物件指標指向末尾,應此要用符f.seek(0, 0)使其指向開頭
測試:空檔案
單字元檔案
單詞檔案
單行檔案:this is a line of test4
標準檔案test
已上傳至github
經測試包含/**/型別的注釋**正規表示式匹配會出現問題
psp表
psp2.1
personal software process stages
預估耗時(分鐘)
實際耗時(分鐘)
planning
計畫· estimate
· 估計這個任務需要多少時間
development
開發· analysis
· 需求分析(包括學習新技術)
· design spec
· 生成設計文件
· design review
· 設計複審(和同事審核設計文件)
· coding standard
· **規範(為目前的開發制定合適的規範)
· design
· 具體設計
· coding
· 具體編碼
· code review
· **複審
· test
· 測試(自我測試,修改**,提交修改)
reporting
報告· test report
· 測試報告
· size measurement
· 計算工作量
· postmortem & process improvement plan
· 事後總結,並提出過程改進計畫
合計
python實現演算法 kmp演算法python實現
kmp演算法python實現 kmp演算法 kmp演算法用於字串的模式匹配,也就是找到模式字串在目標字串的第一次出現的位置 比如abababc 那麼bab在其位置1處,bc在其位置5處 我們首先想到的最簡單的辦法就是蠻力的乙個字元乙個字元的匹配,但那樣的時間複雜度會是o m n kmp演算法保證了時...
python實現支付功能
支付寶開發者公鑰 支付寶生成 alipay public key os.path.join base dir,utils paycenter alipay certs alipay public key alipay public key obj pub openssl.crypto.load pu...
Python實現 tail f 功能
筆者工作中需要監控線上機器的日誌,然後讀取每一行日誌進行處理。在linux機器上,使用如下的指令可以實時監控日誌的產生。tail f test.log 使用tail命令的 f選項可以方便地查閱正在改變的日誌檔案,會把所監控檔案最尾部的內容顯示在螢幕上,並且不斷重新整理。而筆者需要實時得獲取新增的日誌...