我試圖創建一個函數,它接受一個文件名並返回一個2元組,並且該程序中的非空行數,所有這些線的長度。這是我目前的計劃:計算python中非空行和長度的總和
if __name__=="__main__":
print(code_metric('cmtest.py'))
是
(3, 0)
當它應該是::如果我做
def code_metric(file):
with open(file, 'r') as f:
lines = len(list(filter(lambda x: x.strip(), f)))
num_chars = sum(map(lambda l: len(re.sub('\s', '', l)), f))
return(lines, num_chars)
結果我得到的是得到
(3,85)
還有找到長度總和的更好方法線使用功能圖,過濾和減少?我做了第一部分,但無法弄清楚下半場。 AM有點新的Python,所以任何幫助將是偉大的。
下面是測試文件名爲cmtest.py:
import prompt,math
x = prompt.for_int('Enter x')
print(x,'!=',math.factorial(x),sep='')
First line has 18 characters (including white space)
Second line has 29 characters
Third line has 38 characters
[(1, 18), (1, 29), (1, 38)]
的行數爲85個字符,包括空格。我很抱歉,我錯讀了這個問題。每行的總長度也應該包括空格。
你確定當你計算你沒有計算行中空格的字符數嗎? – Aradmey 2015-02-07 22:56:46
您正在做兩次迭代(每次打開文件並循環播放) - 如果要提高效率,爲什麼不將兩個操作合併到一個迭代中? – alfasin 2015-02-07 22:59:40
@ Aradmey-我很確定。它只有1。這就是爲什麼我似乎無法弄清楚爲什麼?我 – BoJaNgLeS 2015-02-07 23:49:06