蓝桥 卷“兔”来袭编程竞赛专场-01破解藏头诗 题解
目录
赛题介绍
挑战介绍
藏头诗是一种将需要传递的内容隐藏在每句诗的第一个字,解密时只需要提取每句诗的第一个字,然后连在一起就可以获得传递的消息。古人经常使用藏头诗,隐晦地表达自己想说的话,既有诗意,又能传递信息。
例如《水浒传》中的一诗:
芦花丛中一扁舟,俊杰俄从此地游。
义士若能知此理,反躬难逃可无忧。
提取每句诗的第一个字,连成一句话就是:芦俊义反。
挑战目标
补充文件 acrostic_poetry.py
下 acrostic_poetry_decryption(poem)
函数中的 TODO 部分,使其实现我们需要的功能:
- 输入一个字符串,字符串为一首诗内容,每句诗之间使用逗号(,)或句号(。)分割。
- 提取每句诗的第一个字,然后从左往右依次拼接,最后将得到的字符串赋值给变量
decryption_text
。 - 如果输入内容中有空格,请先去掉空格后再处理。
如果输入内容中没有内容,则返回
None
。 www
|
|
挑战要求
- 题目需使用 Python3 完成,除 re 库外,不能使用其它标准库和第三方库。
- 函数传入的 poem 为字符串类型,可能为空、None 等值。
- 不得修改文件路径、文件名 acrostic_poetry.py 以及函数名 acrostic_poetry_decryption(poem)。
- 请只保留文件 acrostic_poetry.py 及文件中函数,不要添加测试或执行代码,避免检测时出错。
- 线上环境调试代码时,请使用 python3 acrostic_poetry.py 命令调用 Python3。
参考样例
|
|
注意:最终实现效果以完全满足要求为准,而不是仅满足如上样例。
题解
解题思路
- 要注意对传入参数类型的检查,包括空字符串等情形。
- 考察对字符串分割的能力。若直接用字符串
split()
方法,需要多次操作才能完成。如果分割标识符较多,不是明智之举。这里使用正则的字符串分割方法re.split()
. - 正则模式中括号
[]
用来表示一组字符,单独列出:[,。] 匹配 ‘,或’。' - 利用Python
列表推导
简化代码编写。分别从正则分割后的列表中提取每段的首个字。因为有空字符串,所以还要在列表推导中加个if
判断。 - 最后使用
join
方法将列表拼接为字符串返回即可。
代码如下:
|
|
题目来源:破解藏头诗