Python による頭韻詩の解読

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、頭韻詩に隠されたメッセージを解読する方法を学びます。頭韻詩は、各行の最初の文字が単語またはフレーズを形成する詩の一種です。あなたの課題は、各行の最初の単語を抽出し、それらを連結して隠されたメッセージを明らかにする 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 でさらに多くの実験を行って練習してください。