• 1
    Ввод и вывод данных
    • Задачи
  • 2
    Условия
    • Задачи
  • 3
    Цикл for
    • Задачи
  • 4
    Строки
    • Задачи
  • 5
    Цикл while
    • Задачи
  • 6
    Списки
    • Задачи
  • 7
    Двумерные массивы
    • Задачи
  • 8
    Словари
    • Задачи
  • 9
    Множества
    • Задачи
  • 10
    Функции и рекурсия
    • Задачи
  • к

Занятие 4. строки

Уровень сложности:

иконка человека красный иконка человека белая иконка человека зеленая Pythonlib

Задача«Конкурс»

Вы участвуете в престижном литературном конкурсе. Жюри ценит не только глубину мысли, но и богатство языка. Чтобы произвести впечатление, вы решили проанализировать свое эссе и найти в нем самое длинное и самое короткое слово. Это поможет вам понять, насколько разнообразен ваш словарный запас.

Задача:
Напишите программу, которая принимает на вход одну строку текста (ваше эссе) и находит в ней самое длинное и самое короткое слово.

Правила и ограничения:

  1. Слово — это любая последовательность символов, отделенная пробелами.
  2. Пунктуация: Знаки препинания в начале или в конце слова (.,!?:;-"()') не должны учитываться при подсчете длины. Например, слово "привет," должно считаться как "привет" длиной 6 символов.
  3. Регистр: Сравнение слов должно быть регистронезависимым. Слова "Слово" и "слово" считаются одинаковыми.
  4. Разрешение ничьей:
    • Если несколько слов имеют одинаковую максимальную длину, самым длинным считается то, которое идет первым по алфавиту.
    • Если несколько слов имеют одинаковую минимальную длину, самым коротким считается то, которое идет первым по алфавиту.
  5. Пустой ввод: Если в тексте нет слов (строка пуста или состоит только из пробелов и знаков препинания), программа должна вывести сообщение "Слова не найдены.".

 

Формат ввода

Одна строка текста (string), которая может содержать слова, пробелы и знаки препинания.

Формат Вывода

Самое длинное слово из текста (string). На следующей строке — самое короткое слово из текста (string).
Если слова не найдены, выводится одна строка "Слова не найдены." (string).

Пример

Ввод

Привет, мир! Это очень-очень длинное слово и ещё одно слово.

Вывод

очень-очень
и

Подсказка

Тут подсказки не будет, решай сам!

main.py
Тест 1
Тест 2
Тест 3
Тест 4
Тест 5
Тест 6
Тест 7
Тест 8
Тест 9
Тест 10
Решение разработчика
# Заранее определяем строку со знаками препинания, которые нужно удалить
punctuation = '.,!?:;-"()\''

# Получаем строку текста от пользователя
text = input()

# Преобразуем весь текст в нижний регистр для регистронезависимого сравнения
# и разбиваем его на отдельные слова по пробелам
raw_words = text.lower().split()

# Создаем пустой список для хранения очищенных слов
cleaned_words = []

# Используем цикл for для перебора каждого "сырого" слова
for raw_word in raw_words:
    # Удаляем знаки препинания с начала и конца каждого слова
    word = raw_word.strip(punctuation)
    # Если после очистки слово не стало пустым, добавляем его в наш список
    if word:
        cleaned_words.append(word)

# Проверяем, нашлись ли в тексте какие-либо слова
if not cleaned_words:
    # Если список пуст, выводим соответствующее сообщение
    print("Слова не найдены.")
else:
    # Инициализируем самое длинное и самое короткое слово первым словом из списка
    longest_word = cleaned_words[0]
    shortest_word = cleaned_words[0]

    # Начинаем цикл со второго элемента, так как первый уже взят за основу
    for word in cleaned_words[1:]:
        # Условие для поиска самого длинного слова
        # Оно становится новым самым длинным, если его длина больше
        # ИЛИ если длины равны, но оно по алфавиту идет раньше
        if len(word) > len(longest_word) or (len(word) == len(longest_word) and word < longest_word):
            longest_word = word
        
        # Условие для поиска самого короткого слова
        # Оно становится новым самым коротким, если его длина меньше
        # ИЛИ если длины равны, но оно по алфавиту идет раньше
        if len(word) < len(shortest_word) or (len(word) == len(shortest_word) and word < shortest_word):
            shortest_word = word

    # Выводим найденное самое длинное слово
    print(longest_word)
    # Выводим найденное самое короткое слово на новой строке
    print(shortest_word)

🎉 Поздравляем! 🎉

Ты отлично справился с задачей! Это был непростой вызов, но ты нашёл правильное решение. Ты на шаг ближе к мастерству в программировании! Продолжай в том же духе, ведь каждый пройденный этап делает тебя ещё сильнее.

AD

Реклама

red-snake blue-snake green-snake

Запускаем ваш код...

Помощник ИИ

Привет! Я твой помощник по программированию. Задавай любые вопросы по Python, я могу рассказать о функциях, методах, обьяснить то, что тебе не понятно, а так же о текущей задаче!