蓝桥 卷“兔”来袭编程竞赛专场-09凯撒加密 题解

news/2025/3/17 10:03:29/

赛题介绍

挑战介绍

恺撒密码也称恺撒加密、恺撒变换、变换加密,是一种最简单且最广为人知的加密技术。采用的是替换方法对信息中的英文字符循环替换为字母表序列中该字符后面或前面的第 N 个字符。例如当  N = 2  时,所有的字母 A 都会被替换成 C,B 替换成 D,以此类推。即字母表的对照关系如下:

原文:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文:CDEFGHIJKLMNOPQRSTUVWXYZAB

挑战目标

  • 补充文件  caesar_cipher.py  下  caesar_encryption(text)  函数中的 TODO 部分,使其实现我们需要的功能:
  • 输入一段字符串,将字符串中所有英文字符向后偏移 2 位。
  • 只对半角英文字符进行转换,其它内容保持不变。
  • 字符大小写保持不变,例如 A 转换后为 C,b 转换后为 d。
def caesar_encryption(text: str) -> str:"""TODO"""encryption_text : str = ''return encryption_text

挑战要求

  • 题目需使用 Python3 完成,不能使用标准库和第三方库。
  • 函数传入 text 为字符串类型,可能为空、 None  等值。
  • 不得修改文件路径、文件名  caesar_cipher.py  以及函数名  caesar_encryption(text)
  • 请只保留文件  caesar_cipher.py  及文件中函数,不要添加测试或执行代码,避免检测时出错。
  • 线上环境调试代码时,请使用  python3 caesar_cipher.py  命令调用 Python3。

参考样例

# 样例 1
text = "python"; encryption_text = "ravjqp"
# 样例 2
text = "pyThon"; encryption_text = "raVjqp"
# 样例 3
text = "Python31"; encryption_text = "Ravjqp31"
# 样例 4
text = "Python 您好!"; encryption_text = "Ravjqp 您好!"
# 样例 5
text = None; encryption_text = None

注意:最终实现效果以完全满足要求为准,而不是仅满足如上样例。


题解

解题思路

  1. 要注意对传入参数类型与长度检查。
  2. 因为字母有序,使用chrord对字符移位操作。
  3. 最后使用`join
def caesar_encryption(text: str) -> str:"""TODO"""result = []upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"low = "abcdefghijklmnopqrstuvwxyz"if not isinstance(text, str):return Noneif text == "" or text == None:return Nonefor t in text:if t in upper:if t == 'Y':result.append('A')elif t == 'Z':result.append('B')else:result.append(chr(ord(t)+2))elif t in low:if t == 'y':result.append('a')elif t == 'z':result.append('b')else:result.append(chr(ord(t)+2))else:result.append(t)encryption_text : str = ''.join(result)return encryption_text

题目来源:蓝桥 凯撒加密


http://www.ppmy.cn/news/47381.html

相关文章

【ARMv8 编程】A64 数据处理指令——位域字节操作指令

有些指令将字节、半字或字扩展到寄存器大小,可以是 X 或 W。这些指令存在于有符号(SXTB、SXTH、SXTW)和无符号(UXTB、UXTH)变体中,并且是适当的位域操作指令。 这些指令的有符号和无符号变体都将字节、半字…

【我的创作纪念日—5周年】

序言 用心生活,用力向上,微笑前行,就是对生活最好的回馈。 机缘 最开始写文章,没想那么多,主要是记录一下,就随便写了下,后来认识了一些写文章的小伙伴,在和他们的沟通中越来越体会到…

Qt Quick - FileDialog文件对话框

FileDialog文件对话框使用总结 一、概述二、使用三、常用属性四、常用例子1. 单选打开文本文件2. 单选保存文本文件 一、概述 FileDialog提供了一个基本的文件选择器的功能:它允许用户选择现有的文件或目录,或者创建新的文件名。 对话框最初是不可见的…

wifi/BT芯片RTL8723DS驱动移植和测试之二蓝牙篇

目录 1、根文件系统添加库和蓝牙工具 2、内核配置 (1)自带串口驱动不可选 (2)增加RFCOMM和ble的支持 (3)User level driver support (4)HID driver 3、测试 4、报错说明 &a…

艾瑞报告:预计2023年家用智能照明市场规模过百亿,Yeelight易来引领行业发展

照明是家居的主要部分,以智能化控制技术光环境设计为核心的智能照明成为智能家居重要的子系统与子应用,智能照明通过精准的设计,将单品链接成系统,通过算法和云平台实现智能化,针对不同的空间适配不同的灯光&#xff0…

面试被经常问的SQL窗口函数

面试题 有一张“学生成绩表”,包含4个字段:班级id、学生id、课程id、成绩。 问题1: 求出每个学生成绩最高的三条记录 问题2: 找出每门课程都高于班级课程平均分的学生 技术提升 技术要学会分享、交流,不建议闭门造…

书写我的人生回忆录-这应该是给父母最好的礼物

作为一个业余的软件开发爱好者,我又捣鼓了一个有意思的小东西 ,使用完全免费哈 《书写我的人生回忆录》是一款软件,其中包含70个问题,涵盖了父母的个人喜好、家庭、工作、人生经历和态度等方面。通过回答这些问题,您的…

使用Cubic 自定义 Ubuntu Live ISO

使用Cubic 自定义 Ubuntu Live ISO 需要使用原始镜像文件,比如使用 systemback 备份系统生成的 ISO 有时候 systemback 生成的 ISO 无法启动,可以用 Cubic 修复 使用 Cubic 安装 sudo apt-add-repository ppa:cubic-wizard/release sudo apt-key ad…