Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

UNIX UNIX Ученик (100), открыт 1 день назад
Как бы вы решили эту задачу?
Мне кажется мой код слишком замудрен:

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))
3 ответа
Vadim Egorov Мыслитель (6140) 1 день назад
Вот решение задачи на 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 конкурир...
```

Вы можете сохранить этот код в файл и запустить с использованием входных данных.
UNIX UNIXУченик (100) 1 день назад
И еще не знаете как можно красиво прикладывать свой код?
UNIX UNIXУченик (100) 1 день назад
Вот так
Vadim Egorov Мыслитель (6140) UNIX UNIX, нет, я не знаю, поэтому выделил код знаком " ``` "
Avis Оракул (90856) 1 день назад
По сути ваше решение верное. Но есть пара замечаний:
1. По смыслу задачи неразумно обрезать сами заголовки. Т.е. в самой статье потом заголовок будет целиком и лишняя переменная, которая обрезана и содержит многоточие - просто лишнее. Сокращённый заголовок надо просто вывести, но нигде не сохранять.
2. Вывод в виде print('\n'.join(lst)) - это какое-то безумие. Зачем все строки всех заголовков соединять в одну строку? Один заголовок - это один элемент списка, самостоятельная единица. Если надо вывести элементы построчно, то
 print(*lst,sep='\n') 
3.* Значение N в виде переменной не требуется. Оно используется один раз в генераторе, чтобы ограничить количество вводимых переменных.

Т.е. ваш код можно ужать вот так:
 L = int(input()) 
data = [input() for _ in range(int(input()))]

for d in data:
print(d[:L-3]+['','...'][len(d)>L])
Вертолётов 625 Мудрец (13278) 1 день назад
Код:
 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()
Похожие вопросы