Top.Mail.Ru
Ответы

Легкая задача питоне

Как бы вы решили эту задачу?
Мне кажется мой код слишком замудрен:

lenght = int(input())
n = int(input())
lst = []
for i in range(n):
sentence = input()
if len(sentence) > lenght:
lst.append(sentence[:lenght - 3])
lst[i] += '...'
else:
lst.append(sentence)
print('\n'.join(lst))

По дате
По рейтингу
Аватар пользователя
Мудрец
7мес

Код:

12345678910111213141516171819202122
 def main(): 
    max_length = int(input().strip()) 
    num_headlines = int(input().strip()) 
     
    headlines = [] 
    for _ in range(num_headlines): 
        headlines.append(input().strip()) 
     
    shortened_headlines = [] 
    for headline in headlines: 
        if len(headline) > max_length: 
            shortened_headline = headline[:max_length - 3] + '...' 
        else: 
            shortened_headline = headline 
        shortened_headlines.append(shortened_headline) 
     
    for headline in shortened_headlines: 
        print(headline) 
 
if __name__ == "__main__": 
    main() 
 
Аватар пользователя
Оракул
7мес

По сути ваше решение верное. Но есть пара замечаний:
1. По смыслу задачи неразумно обрезать сами заголовки. Т.е. в самой статье потом заголовок будет целиком и лишняя переменная, которая обрезана и содержит многоточие - просто лишнее. Сокращённый заголовок надо просто вывести, но нигде не сохранять.
2. Вывод в виде print('\n'.join(lst)) - это какое-то безумие. Зачем все строки всех заголовков соединять в одну строку? Один заголовок - это один элемент списка, самостоятельная единица. Если надо вывести элементы построчно, то

1
 print(*lst,sep='\n') 

3.* Значение N в виде переменной не требуется. Оно используется один раз в генераторе, чтобы ограничить количество вводимых переменных.

Т.е. ваш код можно ужать вот так:

12345
 L = int(input()) 
data = [input() for _ in range(int(input()))] 
 
for d in data: 
    print(d[:L-3]+['','...'][len(d)>L]) 
Аватар пользователя
Мыслитель
7мес

Вот решение задачи на Python:

```python
# Чтение входных данных
import sys

input = sys.stdin.read
data = input().splitlines()

# Первая строка: максимальная длина заголовка
max_length = int(data[0])

# Остальные строки: заголовки
headlines = data[1:]

# Функция для сокращения заголовка
def shorten_headline(headline, max_length):
if len(headline) > max_length:
return headline[:max_length - 3] + "..."
else:
return headline

# Применяем сокращение для каждого заголовка
shortened_headlines = [shorten_headline(headline, max_length) for headline in headlines]

# Вывод результата
for shortened in shortened_headlines:
print(shortened)
```

### Как работает программа:
1. Программа считывает данные: максимальную длину заголовка \( L \) и список заголовков.
2. Если длина заголовка больше \( L \), она обрезается до \( L-3 \) символов, и в конце добавляются точки (`...`).
3. Если заголовок короче или равен \( L \), он остается без изменений.
4. Результат выводится построчно.

### Пример ввода:
```
25
Начался саммит по глобальному потеплению
Завтра Новый год!
Python и Java конкурируют за звание самого популярного языка программирования
```

### Пример вывода:
```
Начался саммит по глоб...
Завтра Новый год!
Python и Java конкурир...
```

Вы можете сохранить этот код в файл и запустить с использованием входных данных.