функция, которая принимает имя файла и находит количество строк, превышающее 6 символов
стоит задача:
Напишите функцию find_lines_len_more_6, которая принимает имя файла и находит количество строк, превышающее 6 символов. Не забывайте исключать знак переноса на новую строку, стоящий в конце строки.
Функция find_lines_len_more_6 должна возвращать найденное количество строк
подскажите пожалуйста где и в чем ошибка в написанном мной коде:
def find_lines_len_more_6(file_name:str) -> int:
with open(file_name, 'r') as f:
file_name = file_name.split('\n')
return sum(1 for line in file_name if len(line)>6)+1
пробовала убирать +1 в возвращаемом значении, код все равно не проходит на решение
Ответы (1 шт):
Ошибок в вашем коде две:
file_name = file_name.split('\n')- после открытия файла на чтение вы не читаете содержимое файла при помощи функцииread(), а начинаете парсить его названиеsum(1 for line in file_name if len(line)>6)+1- +1 в конце совершенно ни к чему.
Если исправить, то получается рабочий код:
def find_lines_len_more_6(file_name: str) -> int:
with open(file_name, 'r') as f:
lines = f.read().splitlines()
return sum(1 for line in lines if len(line) > 6)
print(find_lines_len_more_6('test.txt')) # 2
test.txt
123456
1234567
12345
12345678
Как верно написали в комментариях для разбития файла на строки лучше использовать функцию str.splitlines(), поскольку для разделения в ней используется не только символ переноса строки \n, но и другие.