파이썬을 이용한 두운시 해독

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 두운시 (acrostic poem) 에 숨겨진 메시지를 해독하는 방법을 배우게 됩니다. 두운시는 각 행의 첫 글자가 단어나 구절을 이루는 시의 한 종류입니다. 여러분의 과제는 각 행의 첫 단어를 추출하여 연결하여 숨겨진 메시지를 드러내는 Python 함수를 작성하는 것입니다.

👀 미리보기

## 예시
$ python3 acrostic_poetry.py
RainItItAnd

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • 두운시 해독 프로젝트의 문제 설명 및 요구 사항을 이해하는 방법
  • 두운시의 메시지를 해독하는 acrostic_poetry_decryption(poem) 함수를 구현하는 방법
  • 예시 입력을 사용하여 해독 함수를 테스트하는 방법

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • 텍스트 조작 및 패턴 추출과 관련된 문제를 이해하고 해결할 수 있습니다.
  • 두운시에 숨겨진 메시지를 해독할 수 있는 Python 함수를 작성할 수 있습니다.
  • 코드가 올바르게 작동하는지 테스트하고 디버깅할 수 있습니다.

문제 이해

이 단계에서는 두운시 해독 프로젝트의 문제 설명과 요구 사항을 이해하는 방법을 배우게 됩니다.

이 프로젝트의 목표는 시의 내용을 나타내는 문자열을 입력으로 받아 각 행의 첫 단어를 추출하여 연결함으로써 해독된 메시지를 반환하는 함수 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. re.split() 함수와 r"[,.]" 정규 표현식 패턴을 사용하여 poem 문자열을 행 목록으로 분할합니다.
  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 에서 더 많은 랩을 연습하여 기술을 향상시킬 수 있습니다.