Задание к модулю Заголовки Книг | Sololearn: Learn to code for FREE!
New course! Every coder should learn Generative AI!
Try a free lesson
0

Задание к модулю Заголовки Книг

Собственными силами я не справился и нашел решение, соответствующее пройденному материалу: file = open("/usercode/files/books.txt", "r") x = file.readlines() #in the output each line containing a book name is in the form of list element y = len(x) for i in range(y): a=x[i][0] #it gets the first letter of the word at index i in the list b = len(x[i]) if i == y-1: print(a+str(b)) else: print(a+str(b-1)) file.close() """ Однако, не смотря на комментарии, не могу полностью осмыслить то, что происходит в цикле, помогите, пожалуйста, разобраться """

17th Nov 2021, 7:02 AM
Антон Надеин
Антон Надеин - avatar
11 Answers
+ 3
Да, это то что я ожидал увидеть, но в задании нас просят использовать метод readlines(). Я так же решил это задание, только написал условие в тернальном виде и хоть я и применил readlines(), с заданием я считаю не справился, так как этот метод сдесь лишний: for name in file.readlines(): l = 1 if '\n' in name else 0 print(name[0]+str(len(name)-l))
18th Nov 2021, 7:32 AM
Solo
Solo - avatar
+ 2
y - это количество книг, (4). i - это итератор который используется в качестве индекса списка книг. Так как итератор начинается с нуля, то последняя книга будет под индексом 3, таким образом "if i==y-1" ищет последнюю книгу, чтобы не вычетать из её названия последний символ. Автор данного кода малость перемудрил, можно написать гораздо проще и понятнее.
17th Nov 2021, 9:15 AM
Solo
Solo - avatar
+ 1
Что именно вам непонятно?
17th Nov 2021, 7:07 AM
Solo
Solo - avatar
+ 1
Для начала я бы хотел увидеть вашу попытку улучшения этого кода. ☺️ Это будет намного полезнее, чем если вы увидите готовое решение, если конечно вы действительно хотите научится программированию, ведь вы должны научиться решать задачи исходя из своих знаний.
17th Nov 2021, 11:43 AM
Solo
Solo - avatar
+ 1
О, я не подозревал, что можно так написать цикл
18th Nov 2021, 8:21 AM
Антон Надеин
Антон Надеин - avatar
+ 1
На мой взгляд вы зря отметили этот ответ как лучший, ведь он не отвечает на главный ваш вопрос, а другим учащимся гораздо полезнее было-бы разобраться в "абракодабре" приведённого кода ☺️
18th Nov 2021, 8:43 AM
Solo
Solo - avatar
0
Конкретно не могу понять, все, что в if: Почему именно "если i равно y-1"? И print тоже не раздупляю
17th Nov 2021, 8:26 AM
Антон Надеин
Антон Надеин - avatar
0
Спасибо, Василий, могу попросить написать проще и понятней?
17th Nov 2021, 10:09 AM
Антон Надеин
Антон Надеин - avatar
0
Справедливо
18th Nov 2021, 5:55 AM
Антон Надеин
Антон Надеин - avatar
0
file = open("/usercode/files/books.txt", "r") """ x = file.readlines() #in the output each line containing a book name is in the form of list element y = len(x) for i in range(y): a=x[i][0] #it gets the first letter of the word at index i in the list b = len(x[i]) if i == y-1: print(a+str(b)) else: print(a+str(b-1)) """ for line in file: if line[-1] == '\n': print(line[0] + str(len(line) -1)) else: print(line[0] + str(len(line))) file.close()
18th Nov 2021, 6:04 AM
Антон Надеин
Антон Надеин - avatar
0
В этой теме аж три решения и даже с пояснениями, спасибо!
23rd Nov 2021, 9:08 AM
Антон Надеин
Антон Надеин - avatar