Дешифровка акрастических стихотворений на Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь расшифровывать скрытое сообщение в акрастическом стихотворении. Акрастические стихотворения - это тип поэзии, где первые буквы каждой строки составляют слово или фразу. Ваша задача - написать функцию на Python, которая может извлекать первые слова каждой строки и объединять их, чтобы раскрыть скрытое сообщение.

👀 Предварительный просмотр

## Пример
$ python3 acrostic_poetry.py
RainItItAnd

🎯 Задачи

В этом проекте вы научитесь:

  • Как понять постановку задачи и требования для проекта Дешифровки акрастических стихотворений
  • Как реализовать функцию acrostic_poetry_decryption(poem) для дешифровки сообщения в акрастическом стихотворении
  • Как протестировать функцию дешифровки на примере входных данных

🏆 Достижения

После завершения этого проекта вы сможете:

  • Разбираться и решать задачи, связанные с обработкой текста и извлечением шаблонов
  • писать функцию на Python, которая может расшифровывать скрытые сообщения в акрастических стихотворениях
  • Тестировать и отлаживать свой код, чтобы убедиться, что он работает правильно

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/FileHandlingGroup(["File Handling"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/list_comprehensions("List Comprehensions") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/FileHandlingGroup -.-> python/file_operations("File Operations") python/AdvancedTopicsGroup -.-> python/regular_expressions("Regular Expressions") subgraph Lab Skills python/strings -.-> lab-302717{{"Дешифровка акрастических стихотворений на Python"}} python/list_comprehensions -.-> lab-302717{{"Дешифровка акрастических стихотворений на Python"}} python/function_definition -.-> lab-302717{{"Дешифровка акрастических стихотворений на Python"}} python/file_operations -.-> lab-302717{{"Дешифровка акрастических стихотворений на Python"}} python/regular_expressions -.-> lab-302717{{"Дешифровка акрастических стихотворений на Python"}} end

Разобраться с задачей

В этом шаге вы научитесь понимать постановку задачи и требования для проекта Дешифровки акрастических стихотворений.

Цель этого проекта - написать функцию acrostic_poetry_decryption(poem), которая принимает на вход строку, представляющую содержание стихотворения, и возвращает дешифрованное сообщение, извлекая первые слова каждой строки и объединяя их вместе.

Требования к проекту:

  1. Кроме библиотеки re не использовать никакие другие стандартные библиотеки или библиотеки от третьих лиц.
  2. Параметр poem функции может быть строкой, которая может быть пустой, None или любым другим значением.
  3. Не изменять путь к файлу, имя файла (acrostic_poetry.py) или имя функции (acrostic_poetry_decryption(poem)).
  4. При отладке кода в онлайн-окружении использовать команду python3 acrostic_poetry.py для вызова Python3.

Реализовать функцию дешифровки

В этом шаге вы реализуете функцию acrostic_poetry_decryption(poem) для дешифровки сообщения в акрастическом стихотворении.

Вот начальный код для файла acrostic_poetry.py:

import re
from typing import Optional


def acrostic_poetry_decryption(poem: str) -> Optional[str]:
    """
    Дешифровать сообщение в акрастическом стихотворении, извлекая первые слова каждой строки и соединяя их вместе.
    """
    ## Если входной контент пуст, вернуть `None`
    if not poem:
        return None

    ## TODO: Реализовать логику дешифровки
    ## 1. Разбить стихотворение на строки с использованием разделителя ',' или '.'
    ## 2. Извлечь первое слово из каждой строки
    ## 3. Объединить первые слова вместе, чтобы получить текст дешифровки
    ## 4. Назначить полученную строку переменной `decryption_text`

    return decryption_text

Вот, как можно реализовать функцию дешифровки:

  1. Разбить строку poem на список строк с использованием функции re.split() с регулярным выражением шаблона r"[,.]".
  2. Пройти по списку строк и для каждой строки извлечь первое слово, разделив строку по пробелам и взяв первый элемент.
  3. Объединить все первые слова вместе, чтобы получить текст дешифровки.
  4. Назначить текст дешифровки переменной decryption_text и вернуть его.

Вот завершенный код:

import re
from typing import Optional


def acrostic_poetry_decryption(poem: str) -> Optional[str]:
    """
    Дешифровать сообщение в акрастическом стихотворении, извлекая первые слова каждой строки и соединяя их вместе.
    """
    ## Если входной контент пуст, вернуть `None`
    if not poem:
        return None

    ## Разбить стихотворение на строки с использованием разделителя ',' или '.'
    lines = re.split(r"[,.]", poem)

    ## Извлечь первое слово из каждой строки
    words = [line.strip().split(" ")[0] for line in lines]

    ## Объединить первые слова вместе, чтобы получить текст дешифровки
    decryption_text = "".join(words)

    return decryption_text

Протестировать функцию дешифровки

В этом шаге вы протестируете функцию acrostic_poetry_decryption(poem) на примере, предоставленном в задании.

  1. Добавьте следующий код в конец файла acrostic_poetry.py:
if __name__ == "__main__":
    string = "Rain is falling all around, It falls on field and tree. It rains on the umbrella here, And on the ships at sea."
    print(acrostic_poetry_decryption(string))
  1. Сохраните файл и запустите следующую команду в терминале:
python3 acrostic_poetry.py

Вывод должен быть таким:

RainItItAnd

Это подтверждает, что функция acrostic_poetry_decryption(poem) работает как ожидается.

Поздравляем! Вы завершили проект Дешифровка акрастических стихотворений. Если у вас есть вопросы или нужна дополнительная помощь, не стесняйтесь задавать.

✨ Проверить решение и практиковаться

Резюме

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