• 1
    Entrada y salida de datos
    • Tareas
  • 2
    Condiciones
    • Tareas
  • 3
    Bucle for
    • Tareas
  • 4
    Cadenas de texto
    • Tareas
  • 5
    Bucle while
    • Tareas
  • 6
    Listas
    • Tareas
  • 7
    Matrices 2D
    • Tareas
  • 8
    Diccionarios
    • Tareas
  • 9
    Conjuntos
    • Tareas
  • 10
    Funciones y recursión
    • Tareas
  • к

Lección 4. Lines

Dificultad:

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

Tarea«Concurso»

💻 Python

Participas en un prestigioso concurso literario. El jurado valora no solo la profundidad del pensamiento, sino también la riqueza del lenguaje. Para impresionar, decidiste analizar tu ensayo y encontrar la palabra más larga y la más corta en él. Esto te ayudará a comprender cuán diverso es tu vocabulario.

tarea:
Escribe un programa que acepte una línea de texto (tu ensayo) y encuentre la palabra más larga y la más corta en él.

restricciones:

  1. palabra   — Es cualquier secuencia de caracteres separada por espacios.
  2. puntuación:   Los signos de puntuación al principio o al final de la palabra (.,!?;:) deben ignorarse. Por ejemplo, las palabras "¡Hola!" y "Hola" se consideran iguales.
  3. mayúsculas/minúsculas:   La comparación de palabras debe depender de mayúsculas/minúsculas. Las palabras "Sol" y "sol" se consideran diferentes.
  4. resolución de empates:
    • Si varias palabras tienen la misma longitud máxima, la más larga se considera la primera en orden alfabético.
    • Si varias palabras tienen la misma longitud mínima, la más corta se considera la primera en orden alfabético.
  5. entrada vacía: Si no hay palabras en el texto (la línea está vacía o consiste solo en espacios y signos de puntuación), el programa debe mostrar el mensaje "No hay palabras".

 

Formato de entrada

Una línea de texto (cadena), que puede contener palabras, espacios y signos de puntuación.

Formato de salida

La palabra más larga del texto (cadena). En la siguiente línea — la palabra más corta del texto (cadena).
Si no se encuentran palabras, una línea "No se encontraron palabras." (cadena).

Ejemplo

Entrada

¡Hola, paz! Esta es una palabra muy, muy larga y otra palabra.

Salida

Muy, muy
y

Pista

There will be no clue here, decide for yourself!

main.py
Prueba 1
Prueba 2
Prueba 3
Prueba 4
Prueba 5
Prueba 6
Prueba 7
Prueba 8
Prueba 9
Prueba 10
Solución del desarrollador
# Заранее определяем строку со знаками препинания, которые нужно удалить
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)

🎉 ¡Felicidades! 🎉

¡Has resuelto la tarea brillantemente! Era un reto difícil, pero encontraste la solución correcta. ¡Estás un paso más cerca de dominar la programación! Sigue así, cada etapa superada te hace más fuerte.

AD

Publicidad

red-snake blue-snake green-snake

Ejecutando tu código...

Asistente de IA

¡Hola! Soy tu asistente de programación. Hazme cualquier pregunta sobre Python — puedo explicarte funciones, métodos y ayudarte con la tarea actual.