Я пытаюсь создать функцию, которая принимает имя файла, и возвращает 2-кортеж с количеством непустых строк в этой программе, а сумма от длин всех этих линий. Вот моя текущая программа:подсчет непустых строк и сумма длин этих строк в python
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)
В результате я получаю это получить, если я:
if __name__=="__main__":
print(code_metric('cmtest.py'))
является
(3, 0)
, когда он должен быть:
(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
Вы делаете две итерации (и каждый раз, когда вы открываете файл и перебираете строки), если вы хотите повысить эффективность, почему бы не объединить оба действия в одну итерацию? – alfasin
@ Aradmey- Я довольно уверен в этом. Это только на 1. Вот почему я не могу понять, почему? I – BoJaNgLeS