【趣味学算法】08 凯撒密码

注: 本系列仅为个人学习笔记,学习内容为《算法小讲堂》(视频传送门),通俗易懂适合编程入门小白,需要具备python语言基础,本人小白,如内容有误感谢您的批评指正

《罗马帝王传》中描述了古罗马恺撒大帝在公元 2 世纪使用的一种加密方法。
它通过将字母按字母表中的顺序后移 3 位起到加密作用,如将字母 A 换作字母 D,将字母 B 换作字母 E,以此类推。
假如有这样一道命令 RETURN TO ROME,在用恺撒的方法加密之后就成为 UHWXUQ WR URPH 这样的密文。
这样即使被敌军截获,也无法从字面上获得有用信息。
在《罗马帝王传》中还说到解密方法:“如果想知道它们的意思,得用第4个字母置换第1个字母,即以D代A,以此类推。”

我们先按照恺撒加密法的规则制成明文和密文字母对照表,如下。
明文字母表: ABCDEFGHIJKLMNOPQRSTUVWXYZ
密文字母表: DEFGHIJKLMNOPQRSTUVWXYZABC
小写字母同理。

接下来让我们编写一段程序实现加密和解密的功能,输入1解密,输入2加密,输入0退出程序

def encrypted():output = ''s = input('请输入要解密的密文:')for c in s:if  'A'<= c <= 'W' or'a' <= c <= 'w':output += chr(ord(c)+3)elif 'X'<= c<= 'Z' or'x' <= c <= 'z':output += chr(ord(c)-23)      else:output += creturn outputdef decryption():output = ''s = input('请输入要加密的名文:')for c in s:if  'D'<= c<= 'Z' or'd' <= c <= 'z':output += chr(ord(c)-3)elif 'X'<= c<= 'Z' or'x' <= c <= 'z':output += chr(ord(c)+23)      else:output += creturn outputif __name__ == '__main__':while True:i = input('解密1,加密2,退出0,请输入:')try:i = int(i)except Exception as e:print('“{}”非法输入请重新操作\n'.format(i))continueif i == 1:print(encrypted())elif i == 2:print(decryption())elif i==0:print('已退出')breakelse:print('“{}”非法输入请重新操作'.format(i))print()

测试结果:

解密1,加密2,退出0,请输入:1
请输入要解密的密文:ilsb
love解密1,加密2,退出0,请输入:2
请输入要加密的名文:love
ilsb解密1,加密2,退出0,请输入:3
“3”非法输入请重新操作解密1,加密2,退出0,请输入:ilsa
“ilsa”非法输入请重新操作解密1,加密2,退出0,请输入:0
已退出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/747431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分析型数据库的主要使用场景有哪些?

如今数据已经成为了企业和组织的核心资产。如何有效地管理和利用这些数据&#xff0c;成为了决定竞争力的关键。分析型数据库作为数据处理领域的重要工具&#xff0c;为各行各业提供了强大的数据分析和洞察能力。基于分析型数据库&#xff08;Apache Doris &#xff09;构建的现…

当模型足够大时,Bias项不会有什么特别的作用

问题来源&#xff1a; 阅读OLMo论文时&#xff0c;发现有如下一段话&#xff1a; 加上前面研究llama和mistral结构时好奇为什么都没有偏置项了 偏置项的作用&#xff1a; 回到第一性原理来分析&#xff0c;为什么要有偏置项的存在呢&#xff1f; 在神经网络中&#xff0c;…

跨境热点!TikTok直播网络要求是什么?

TikTok直播作为一种互动性强、实时性要求高的社交媒体形式&#xff0c;对网络环境有着一系列特定的需求。了解并满足这些需求&#xff0c;对于确保用户体验、提高直播质量至关重要。本文将深入探讨TikTok直播对网络环境的要求以及如何优化网络设置以满足这些要求。 TikTok直播的…

mac启动elasticsearch

1.首先下载软件&#xff0c;然后双击解压&#xff0c;我用的是7.17.3的版本 2.然后执行如下命令 Last login: Thu Mar 14 23:14:44 on ttys001 diannao1xiejiandeMacBook-Air ~ % cd /Users/xiejian/local/software/elasticsearch/elasticsearch-7.17.3 diannao1xiejiandeMac…

[剪藏] - 2024QS世界大学前200名排名榜(101-200)

2024QS世界大学排名&#xff08;101-200&#xff09; 排名 校名/国家 综合得分 100 诺丁汉大学 60.4 United Kingdom 102 威斯康星大学麦迪逊分校 60 United States 103 智利天主教大学 59.9 Chile 104 谢菲尔德大学 59.7 United Kingdom 105 乌普萨…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:Menu)

以垂直列表形式显示的菜单。 说明&#xff1a; 该组件从API Version 9开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 Menu组件需和bindMenu或bindContextMenu方法配合使用&#xff0c;不支持作为普通组件单独使用。 子组件 包含MenuIt…

HTML—CSS盒子模型(Box Model)

基本介绍&#xff1a; CSS处理网页时&#xff0c;HTML的每一个标签可以看作是一个盒子&#xff0c;网页布局将指定的标签放到指定的位置上摆放&#xff0c;相当于摆放盒子。 每一个标签(盒子)所包含的内容&#xff1a;从外到内 ①外边距(margin)—规定盒子与盒子之间的距离&…

LeetCode---388周赛

题目列表 3074. 重新分装苹果 3075. 幸福值最大化的选择方案 3076. 数组中的最短非公共子字符串 3077. K 个不相交子数组的最大能量值 一、重新分装苹果 注意题目中说同一个包裹中的苹果可以分装&#xff0c;那么我们只要关心苹果的总量即可&#xff0c;在根据贪心&#x…

Linux学习-标准IO编程

目录 1.IO输入输出 2.Linux文件类型: 3.普通文件的操作 二进制文件操作 perror&#xff08;&#xff09; valgrind --toolmemcheck --leak-checkfull filename 1.IO输入输出 操作对象是文件 2.Linux文件类型: b block 块设备文件 按块扫描…

为什么光学器件需要厚度

确定光学厚度的限值 光学元件的功能和性能在很大程度上受到可用光学材料的限制。制造和光学元件设计的最新发展现在拓宽了可以实现的目标。特别是&#xff0c;平面光学器件或超表面可以设计为具有大块光学元件的功能&#xff0c;但其厚度缩小到仅几百纳米。米勒现在提出了一项…

git小白入门

git是什么 Git是一种流行的版本控制系统&#xff0c;被广泛用于软件开发中来跟踪和管理代码的变化。它是由Linus Torvalds在2005年创建的&#xff0c;最初的目的是为了更高效地管理Linux内核的开发。Git使得多人在同一个项目上工作变得更加简单&#xff0c;可以轻松合并不同开…

人工智能入门学习笔记1:什么是人工智能

一、什么是人工智能 人工智能(Artificial Intelligence)&#xff0c;是一个以计算机科学&#xff08;Computer Science&#xff09;为基础&#xff0c;由计算机、心理学、哲学等多学科交叉融合的交叉学科、新兴学科&#xff0c;研究、开发用于模拟、延伸和扩展人的智能的理论、…

C++ //练习 10.38 列出5个迭代器类别,以及每类迭代器所支持的操作。

C Primer&#xff08;第5版&#xff09; 练习 10.38 练习 10.38 列出5个迭代器类别&#xff0c;以及每类迭代器所支持的操作。 环境&#xff1a;Linux Ubuntu&#xff08;云服务器&#xff09; 工具&#xff1a;vim 解释 输入迭代器&#xff0c;&#xff0c;!&#xff0c;&…

Centos8安装Docker,使用阿里云源

一、前期准备 1.关闭防火墙&#xff0c;SELINUX systemctl stop firewalld.service systemctl disable firewalld.service setenforce 0 sed -i "s/SELINUXenforcing/SELINUXdisabled/g" /etc/selinux/config查看状态 systemctl status firewalld systemctl status…

蓝桥杯 - 大石头的搬运工 C++ 前缀和 算法 附Java python

题目 思路和解题方法 这段代码的目标是计算给定点集的最小总移动成本&#xff0c;使得所有点都在同一直线上。它通过计算每个点左边和右边的移动成本&#xff0c;然后在所有可能的分割点中选择最小成本。具体步骤如下&#xff1a; 读取输入的点集&#xff0c;每个点表示为 (y, …

深入理解 Java 多线程、Lambda 表达式及线程安全最佳实践

Java 线程 线程使程序能够通过同时执行多个任务而更有效地运行。 线程可用于在不中断主程序的情况下在后台执行复杂的任务。 创建线程 有两种创建线程的方式。 扩展Thread类 可以通过扩展Thread类并覆盖其run()方法来创建线程&#xff1a; public class MyThread extend…

AI学习笔记之六:无监督学习如何帮助人类挖掘数据金矿和防范网络欺诈

在这个大数据时代&#xff0c;企业和组织在过去几十上百年的经营过程中积累了大量的原始数据&#xff0c;其中蕴含着宝贵的商业价值和见解。然而&#xff0c;要从这些海量的、未经标记和处理的数据中发现隐藏的规律和知识&#xff0c;并不是一件容易的事情。这就好比要从一座巨…

C++实验 面向对象编程

一、实验目的&#xff1a; 掌握类中静态成员的定义方法&#xff0c;初始化方法&#xff0c;使用方法&#xff1b; 掌握类的友元说明方法&#xff0c;理解友元的使用特点 二、实验内容&#xff1a; 1、编写程序&#xff0c;统计某旅馆住宿客人的总数&#xff0c;要求输入客人…

[SaaS] AI试衣间

就刚刚&#xff01;我在淘宝用AI试了1000件衣服~淘宝AI试衣间&#xff0c;1秒换装&#xff0c;立即解锁不一样的你&#xff01;https://mp.weixin.qq.com/s/mZiNmepoWddYaLbEaap1Ow

C#入门及进阶教程| Windows编程(一)Windows应用的基本概念及开发步骤

1.Windows应用的基本概念 C#可以为Windows操作系统生成多类应用&#xff0c;其中最基本的两类应用是基于控制台的应用和基于GUI&#xff08;Graphics User Interface&#xff0c;图形用户界面&#xff09;的应用。基于控制台的应用程序的输出是基于文本的&#xff0c;不需要用…