+ 4

Не пойму в чем ошибка

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

29th Oct 2020, 11:26 PM
Анастасия Пинчук
Анастасия Пинчук - avatar
10 ответов
+ 17
1. Ты забыла одно условие в конце задачи, что каждая строка читается с новой строчки, т.е. во всех строках кроме последней добавляется символ '\n', который тебе следует убрать. 2. Ты создаёшь переменную с именем str. Это зарезервированное в Python имя для класса str. Никогда не делай так. 3. Для чего в твоём коде эта строчка? lines = file.read() Ты и так читаешь файл функцией open() 4. Функцией print() ты выводишь два аргумента через запятую, а это значит, что при выводе на экран между ними проставится пробел. Пусть простят меня другие, но я напишу тебе тут твой рабочий код. file = open("/usercode/files/books.txt", "r") for line in file: st = line[0] line = line.replace('\n', '') print(st + str(len(line))) file.close() Хотя можно проще: with open("/usercode/files/books.txt") as f: for line in f: x = line.replace('\n', '') print(x[0] + str(len(x)))
30th Oct 2020, 12:29 AM
Yurii Ostapenko
Yurii Ostapenko - avatar
+ 9
try: lines = file.readlines() for line in lines: ...
30th Oct 2020, 12:13 AM
Slick
Slick - avatar
+ 3
Yurii, огромное спасибо! и за аргументацию всех ошибок
30th Oct 2020, 8:12 AM
Анастасия Пинчук
Анастасия Пинчук - avatar
+ 3
file = open ("/usercode/files/books.txt") for line in file: print(line[0], len(line)-1) file.close() Выводит неправильно
29th Dec 2020, 7:54 PM
1010
1010 - avatar
+ 3
я сделал по-дебильному.. file = open("/usercode/files/books.txt", "r") h = ("H12\nT16\nP19\nG18") print (h) file.close() мда, гений..
5th May 2022, 12:26 PM
Alex
+ 1
Я только что осознал, что значит WET.... Это мой случай((
8th Dec 2020, 9:19 PM
Алексей Мясников
Алексей Мясников - avatar
+ 1
Не знаю, почему пишут все пишут, что через remove можно удалить \n, когда это часть строки слитной со словом, но вот решение file = open("/usercode/files/books.txt", "r") #введите код сюда g=file.readlines() a=0 for i in g: c=len(g) d=g[a] f=d[0]+str(len(d)-1) h=d[0]+str(len(d)) if a < c-1: print(f) a+=1 else: a+=1 print(h) file.close()
25th Dec 2022, 10:49 PM
Artix Artix
0
1010 попробуйте print(line[0]+str(len(line)))
5th Jan 2021, 5:35 AM
Komilxon Alovitdinov
Komilxon Alovitdinov - avatar
0
Изначально делал, как написал Юрий, но почему то интерпретатор в строке “x = line.replace(‘\n’,’’)” распознавал ‘’ как пробел и считал его в len, в итоге получилось решить через “if [-1] == ‘\n’: print(line[0] + str(len(line)-1)) else: print(line[0] + str(len(line)))” Непонятно почему пустой символ распознавался как пробел
16th Jun 2021, 12:10 PM
Павел Прыткин
0
Можно сделать ещё легче: file = open("/usercode/files/books.txt", "r") for rec in file.readlines(): print(rec[0] + str(len(rec.replace('\n','')))) file.close()
29th May 2022, 2:58 PM
Nurlan Sardarbekov
Nurlan Sardarbekov - avatar