网站建设包含项目,网站备案服务内容,seo学徒培训,做网站的地方赛题介绍
挑战介绍
曾公亮编撰的《武经总要》中记载了一套严谨的军事通信密码#xff0c;这也是目前发现我国古代战争中最早使用的军用密码表。将战场上可能常用到的情况#xff0c;用 40 个短语归纳表示#xff0c;且每个短语前编有固定的数字代码#xff0c;这 40 个短…赛题介绍
挑战介绍
曾公亮编撰的《武经总要》中记载了一套严谨的军事通信密码这也是目前发现我国古代战争中最早使用的军用密码表。将战场上可能常用到的情况用 40 个短语归纳表示且每个短语前编有固定的数字代码这 40 个短语及数字代码如下
代码短语代码短语代码短语代码短语代码短语1请弓2请箭3请刀4请甲5请枪旗6请锅幕7请马8请衣赐9请粮料10请草料11请车牛12请船13请攻城守县14请添兵15请移营16请进军17请退军18请固定19未见军20见贼21贼多22贼少23贼相敌24贼添兵25贼移营26贼进军27贼退军28贼固守29围得贼城30解围城31被贼围32贼围解33战不胜34战大胜35战大捷36将士投降37将士叛38士卒病39部将病40战小胜
然后约定某一首五言古诗作为解密的钥匙五言古诗中 40 个字正好对应密码表中 40 种情况。
例如约定唐代王勃的《送杜少府之任蜀川》为解密的钥匙。 城阙辅三秦风烟望五津。 与君离别意同是宦游人。 海内存知己天涯若比邻。 无为在歧路儿女共沾巾。 如果军中马匹不足需要请求马匹那么对应密码表中的情报则是7、请马。而《送杜少府之任蜀川》中第 7 个字是烟将军只需要将“烟”字写到 一件普通公文书牒之中并在字上加盖印章。朝廷收到公文书牒后通过《送杜少府之任蜀川》确认“烟”字的位置然后查找密码表获得相应的情报。
挑战目标
补充文件 zeng_gongliang.py 下 zeng_gongliang_decryption(text) 函数中的 TODO 部分使其实现我们需要的功能
输入古诗《送杜少府之任蜀川》中任意一个字返回曾公亮密码表中对应的短语。如果输入的内容在古诗《送杜少府之任蜀川》的 40 个 字中查找不到则返回 None。其它情况全部返回 None。
def zeng_gongliang_decryption(text: str) - str:TODOkey_dict {1:请弓, 2:请箭, 3:请刀, 4:请甲, 5:请枪旗, 6:请锅幕, 7:请马, 8:请衣赐, 9:请粮料, 10:请草料, 11:请车牛, 12:请船, 13:请攻城守县, 14:请添兵, 15:请移营, 16:请进军, 17:请退军, 18:请固定, 19:未见军, 20:见贼, 21:贼多, 22:贼少, 23:贼相敌, 24:贼添兵, 25:贼移营, 26:贼进军, 27:贼退军, 28:贼固守, 29:围得贼城, 30:解围城, 31:被贼围, 32:贼围解, 33:战不胜, 34:战大胜, 35:战大捷, 36:将士投降, 37:将士叛, 38:士卒病, 39:部将病, 40:战小胜} decryption_text : str return decryption_text挑战要求
题目需使用 Python3 完成不能使用标准库和第三方库。函数传入 text 为字符串类型可能为空、None 等值。不得修改文件路径、文件名 zeng_gongliang.py 以及函数名 zeng_gongliang_decryption(text)。请只保留文件 zeng_gongliang.py 及文件中函数不要添加测试或执行代码避免检测时出错。线上环境调试代码时请使用 python3 zeng_gongliang.py 命令调用 Python3。
参考样例
# 样例 1
text 烟; decryption_text 请马
# 样例 2
text 城; decryption_text 请弓
# 样例 3
text 请弓; decryption_text None
# 样例 4
text 城 ; decryption_text None
# 样例 5
text None; decryption_text None注意最终实现效果以完全满足要求为准而不是仅满足如上样例。 题解
解题思路
主要考察字典dict结构及方法的运用
要注意对传入参数类型的检查包括空字符串等情形。构造索引字符串。利用index()方法寻找某个字符的索引.过滤不存在的键值返回None。最后使用get方法从字典找到对应的字符串值返回即可。
def zeng_gongliang_decryption(text: str) - str:TODO# 过滤非str类型输入if not isinstance(text, str) or text :return None# 仅一个字符输入限制if len(text) 1:return None# 构造数据字典key_dict {1: 请弓, 2: 请箭, 3: 请刀, 4: 请甲, 5: 请枪旗,6: 请锅幕, 7: 请马, 8: 请衣赐, 9: 请粮料, 10: 请草料,11: 请车牛, 12: 请船, 13: 请攻城守县, 14: 请添兵, 15: 请移营, 16: 请进军, 17: 请退军, 18: 请固定, 19: 未见军, 20: 见贼,21: 贼多, 22: 贼少, 23: 贼相敌, 24: 贼添兵, 25: 贼移营,26: 贼进军, 27: 贼退军, 28: 贼固守, 29: 围得贼城, 30:解围城,31: 被贼围, 32: 贼围解, 33: 战不胜, 34: 战大胜,35: 战大捷,36: 将士投降, 37: 将士叛, 38: 士卒病, 39: 部将病, 40: 战小胜}poem 城阙辅三秦风烟望五津与君离别意同是宦游人海内存知己天涯若比邻无为在歧路儿女共沾巾if text in poem:num poem.index(text) 1if key_dict.get(str(num)) None:return Noneelse:return Nonedecryption_text: str key_dict.get(str(num))return decryption_text题目来源蓝桥破解曾公亮密码