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() """ Однако, не смотря на комментарии, не могу полностью осмыслить то, что происходит в цикле, помогите, пожалуйста, разобраться """
11 ответов
+ 3
Да, это то что я ожидал увидеть, но в задании нас просят использовать метод readlines().
Я так же решил это задание, только написал условие в тернальном виде и хоть я и применил readlines(), с заданием я считаю не справился, так как этот метод сдесь лишний:
for name in file.readlines():
l = 1 if '\n' in name else 0
print(name[0]+str(len(name)-l))
+ 2
y - это количество книг, (4).
i - это итератор который используется в качестве индекса списка книг.
Так как итератор начинается с нуля, то последняя книга будет под индексом 3, таким образом "if i==y-1" ищет последнюю книгу, чтобы не вычетать из её названия последний символ.
Автор данного кода малость перемудрил, можно написать гораздо проще и понятнее.
+ 1
Что именно вам непонятно?
+ 1
Для начала я бы хотел увидеть вашу попытку улучшения этого кода. ☺️
Это будет намного полезнее, чем если вы увидите готовое решение, если конечно вы действительно хотите научится программированию, ведь вы должны научиться решать задачи исходя из своих знаний.
+ 1
О, я не подозревал, что можно так написать цикл
+ 1
На мой взгляд вы зря отметили этот ответ как лучший, ведь он не отвечает на главный ваш вопрос, а другим учащимся гораздо полезнее было-бы разобраться в "абракодабре" приведённого кода ☺️
0
Конкретно не могу понять, все, что в if: Почему именно "если i равно y-1"? И print тоже не раздупляю
0
Спасибо, Василий, могу попросить написать проще и понятней?
0
Справедливо
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()
0
В этой теме аж три решения и даже с пояснениями, спасибо!