看標(biāo)題就知道要求了,統(tǒng)計(jì)代碼行數(shù)蒸辆。
Kata中要求統(tǒng)計(jì)Java的代碼行數(shù)贾虽,我手上沒(méi)有Java代碼逃糟,用Python代碼測(cè)試了一下,原理是一樣的蓬豁。
下面是不算代碼的行:
- 空行
- 只有空白字符的绰咽,比如制表符、空格
- 以//開(kāi)頭的注釋行
- 被/../包裹的注釋塊
注意:注釋塊不能嵌套地粪,也就是說(shuō)不會(huì)出現(xiàn)/..../..../..../這樣的情況取募。
代碼
直接上代碼:
def countCodeLines(filename):
result = 0
inComment = False
with open(filename) as f:
for line in f.readlines():
temp = line.strip()
if not temp:
continue
if temp.startswith("http://"):
continue
if temp.startswith("/*"):
inComment = True
if temp.endswith("*/"):
inComment = False
continue
if inComment:
if temp.endswith("*/"):
inComment = False
continue
result += 1
return result
print countCodeLines("9.py")
非常簡(jiǎn)單是吧,多虧Python的strip()函數(shù)蟆技,它可以過(guò)濾掉首尾的空白符矛辕。
有一個(gè)重點(diǎn)就是inComment變量,這個(gè)用來(lái)標(biāo)記當(dāng)前是否在代碼塊中付魔,由于規(guī)則說(shuō)明不能嵌套聊品,所以這里只可能有一層。如果可以嵌套的話几苍,這個(gè)變量應(yīng)該用來(lái)記錄當(dāng)前層數(shù)翻屈,從而判斷是否在代碼塊中。
這次的Kata比較簡(jiǎn)單妻坝,大家也可以動(dòng)手試一試伸眶,只要美化一下輸出結(jié)果就可以做出一個(gè)很不錯(cuò)的小工具了。