介绍
在这个项目中,你将学习如何解读离合诗中的隐藏信息。离合诗是一种诗歌形式,每行的首字母拼出一个单词或短语。你的任务是编写一个 Python 函数,该函数可以提取每行的首单词并将它们连接起来以揭示隐藏信息。
👀 预览
## 示例
$ python3 acrostic_poetry.py
RainItItAnd
🎯 任务
在这个项目中,你将学习:
- 如何理解离合诗解密项目的问题陈述和要求
- 如何实现
acrostic_poetry_decryption(poem)函数来解密离合诗中的信息 - 如何使用示例输入测试解密函数
🏆 成果
完成这个项目后,你将能够:
- 理解并解决涉及文本处理和模式提取的问题
- 编写一个可以解密离合诗中隐藏信息的 Python 函数
- 测试和调试你的代码以确保它能正确运行
理解问题
在这一步中,你将学习如何理解离合诗解密项目的问题陈述和要求。
这个项目的目标是编写一个函数 acrostic_poetry_decryption(poem),它接受一个表示诗歌内容的字符串作为输入,并通过提取每行的首单词并将它们连接在一起来返回解密后的信息。
该项目的要求如下:
- 除了
re库之外,不要使用任何其他标准库或第三方库。 - 函数的
poem参数可以是一个可能为空、None或任何其他值的字符串。 - 不要修改文件路径、文件名(
acrostic_poetry.py)或函数名(acrostic_poetry_decryption(poem))。 - 在线环境中调试代码时,使用
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
以下是实现解密函数的方法:
- 使用正则表达式模式
r"[,.]",通过re.split()函数将poem字符串分割成行列表。 - 遍历行列表,对于每一行,通过按空格分割行并取第一个元素来提取首单词。
- 将所有首单词连接在一起以获得解密后的文本。
- 将解密后的文本赋值给
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) 函数。
- 在
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))
- 保存文件并在终端中运行以下命令:
python3 acrostic_poetry.py
输出应该是:
RainItItAnd
这证实了 acrostic_poetry_decryption(poem) 函数按预期工作。
恭喜!你已经完成了离合诗解密项目。如果你有任何问题或需要进一步的帮助,请随时提问。
总结
恭喜!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



