+ 1

Не могу решить контрольную задачу про заголовки, помогите:

Вам дан файл формата books.txt, в отдельных строках указаны заголовки книг. Вам нужно прочитать заголовки один за одним и в отдельных строках выдать код каждой книги. Например, код для книги «Гарри Поттер» будет выглядеть следующим образом: H12, так как заголовок состоит из 12 символов (включая пробелы) Например, если файл формата books.txt содержит такие заголовки: Какая-то книга Другая книга Ваша программа должна выдать результат: К14 Д12 file = open("/usercode/files/books.txt", "r") #введите код сюда for i in file: x = str(len(i) - 1) print(i[0] + x) file.close() Мой вывод: H12 T16 P19 G17 Должен быть: H12 T16 P19 G18 В чём проблема с последним кодом?

4th Nov 2020, 1:54 PM
Andrey
Andrey - avatar
5 Antworten
+ 6
You can check if the last character in line is "\n" or not ,then decide if you need to decrement length of it by one or not Here it is, if i[-1]=="\n": print(str(len(i)-1)) else: print(str(len(i))) Edit: another way to achieve it would be using rstrip it will remove all the whitespace and newline characters from the end of the line like, for i in file : x=str(len(i.rstrip()))
4th Nov 2020, 2:15 PM
Abhay
Abhay - avatar
+ 4
Andrey you can't do len(i)-1 for every line since last line in the file does not have a newline character("\n") at the end of it
4th Nov 2020, 1:58 PM
Abhay
Abhay - avatar
+ 2
Смог решить таким способом file = open("/usercode/files/books.txt", "r") #введите код сюда for i in file: if i[-1] == "\n": print(str(i[0])+(str(len(i)-1))) else: print(str(i[0])+(str(len(i)))) file.close()
27th Jan 2021, 10:29 PM
Vlad Bratkovskyi
Vlad Bratkovskyi - avatar
0
And so what i need to write?
4th Nov 2020, 2:10 PM
Andrey
Andrey - avatar
0
Thank you very much😉
4th Nov 2020, 2:21 PM
Andrey
Andrey - avatar