用 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. 使用正则表达式模式 r"[,.]",通过 re.split() 函数将 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 中练习更多实验来提升你的技能。