恺撒密码 I Python实现
- '''
恺撒密码 I
描述
凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+3) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-3) mod 26
假设用户可能使用的输入仅包含小写字母a~z和空格,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。
输入
示例1: python is good
输出
示例1: sbwkrq lv jrrg
'''
#<1>
Str = input()
for i in range(0, len(Str)):
if Str[i] == ' ':
print(' ', end="")
elif Str[i] in ['x', 'y', 'z']:
# print('{}'.format(chr(ord(Str[i]) - 23)), end="") #另一种写法
print(chr(ord(Str[i])-23),end='')
else:
# print('{}'.format(chr(ord(Str[i]) + 3)), end="") #另一种写法
print(chr(ord(Str[i])+3),end='')
#<1>的另一种表达,可以解释“逻辑或只能 “A or B”不能“A or B or C””
- shuru=input()
- n=len(shuru)
- cheng=' '
- for i in range(n):
- if shuru[i]=='X'or shuru[i]=='x':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]=='Y' or shuru[i]=='y':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]=='Z' or shuru[i]=='z':
- cheng+=chr(ord(shuru[i])-23)
- elif shuru[i]==' ':
- cheng+=shuru[i]
- else:
- cheng+=chr(ord(shuru[i])+3)
- print(cheng[1:n+1])
- #<2>
- #p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"#这道题目中这样写也可以
p="abcdefghijklmnopqrstuvwxyz"
n = input()
for i in n:
if i ==" ":#判断为空格特殊情况
print(" ", end="")
else:
a=p.find(i)#查找索引位置
b=(a+3)%26
print(p[b],end="")
#<3>
- P = input()
G = []
for i in P:
G.append(i)
L = len(G)
K = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
for i in range(L):
if G[i] in K:
x = K.index(G[i])
if x == 23:
x = 0
elif x == 24:
x = 1
else:
x = x + 3
print(K[x],end="")
else:
print(" ",end="")
#<4>这样写大写也可以转换成对应的大写字母
- P = input()
G = []
for i in P:
G.append(i)
L = len(G)
K = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for i in range(L):
if G[i] in K:
x = K.index(G[i])
if x == 23:
x = 0
elif x == 24:
x = 1
elif x == 25:
x = 3
elif x == 49:
x = 26
elif x == 50:
x = 27
elif x == 51:
x = 28
else:
x = x + 3
print(K[x],end="")
else:
print(" ",end="")
#<5>这样写也可以转换直接转换对应的大小写
- Str = input()
for i in range(0, len(Str)):
if Str[i] == ' ':
print(' ', end="")
elif Str[i] in ['x', 'y', 'z','X','Y','Z']:
# print('{}'.format(chr(ord(Str[i]) - 23)), end="") #另一种写法
print(chr(ord(Str[i])-23),end='')
else:
# print('{}'.format(chr(ord(Str[i]) + 3)), end="") #另一种写法
print(chr(ord(Str[i])+3),end='')
#方法<2>不好实现大写对应转换,带可以启示稍稍改进方法<4>
- P = input()
G = []
for i in P:
G.append(i)
L = len(G)
K = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z']
for i in range(L):
if G[i] in K:
x = K.index(G[i])
if x == 23 or x == 24 or x == 25:
x = (x+3)%26
elif x == 49:
x = 26
elif x == 50:
x = 27
elif x == 51:
x = 28
else:
x = x + 3
print(K[x],end="")
else:
print(" ",end="")
恺撒密码 I Python实现的更多相关文章
- python恺撒密码 与 字符串反码 【chr()与ord()函数的两种不同应用】
恺撒密码 描述 恺撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: ...
- 恺撒密码 I
恺撒密码 I ...
- 恺撒密码 B
恺撒密码 B ...
- PythonChallenge 1:恺撒密码的解码
题目: 解题思路:根据图中的K→M,O→Q,E→G,我们可以发现K,O,E这三个字母都向后移动了2位.据说恺撒率先使用了这一加密方法,因此将其命名为恺撒密码.它的基本思想是:通过把字母移动一定的位数来 ...
- Python编程练习:编程实现恺撒密码
问题描述:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A B C D ...
- 凯撒密码移位python
#!/usr/bin/python'''凯撒密码'''a="gmbhqwertghjkcvbzn"s=[""]*len(a)for j in range(26) ...
- 困在栅栏里的恺撒WriteUp(附栅栏密码加密解密脚本)
题目地址:http://www.shiyanbar.com/ctf/1867 这道题目并不难,就是先用栅栏密码解密,然后再用恺撒密码解密就好. 1. 6代表了栅栏密码的栏数(说实话,一开始我也没看出来 ...
- 凯撒密码加密解密--JAVA实现(基础)
凯撒密码一种代换密码,据说凯撒是率先使用加密函的古代将领之一,因此这种加密方法被称为恺撒密码.凯撒密码的基本思想是:通过把字母移动一定的位数来实现加密和解密.明文中的所有字母都在字母表上向后(或向前) ...
- 凯撒密码、GDP格式化输出、99乘法表
1.恺撒密码的编码 s=input('明文:') print('密文:',end='') for i in s: print(chr(ord(i)+3),end='') 附加: print('字符串的 ...
随机推荐
- Apache Solr 介绍
Apache Solr 介绍 Solr 是什么? Solr 是一个开源的企业级搜索服务器,底层使用易于扩展和修改的Java 来实现.服务器通信使用标准的HTTP 和XML,所以如果使用Solr 了解J ...
- flex布局demo
flex布局 http://static.vgee.cn/static/index.html
- C++进阶--理解左值和右值
/* * 理解左值和右值 * * * 为什么要关心这个? * 1. 有助于理解C++结构,搞明白编译器的错误和警告 * 2. C++ 11中引入了右值引用,理解左值右值是前提 * */ /* * 简单 ...
- 阿里云安装kubernetes-UI报错endpoints \"kubernetes-dashboard\" not found解决方法
问题:阿里云ECS安装kube-ui v5后,访问 http://master_ip:8080/ui/跳转到http://master_ip:8080/api/v1/proxy/namespaces/ ...
- js面向对象1
1.在空白的Object上加属性和方法: <script type="text/javascript"> function createPerson(name, qq) ...
- 滚动效果marquee的用户体验不好,很少被用到,一般用jquery替代
滚动效果marquee的用户体验不好,很少被用到,一般用jquery替代
- HttpServletRequest接收参数的几种方法
HttpServletRequest接收参数的几种方法 我们经常用servlet和jsp, 经常用request.getParameter() 来得到数据. request.getParameter( ...
- 网站优化URL需要注意的几个细节
原文地址:http://www.douban.com/note/474016612/ 一个好的URL结构无论是对搜索引擎,还是用户,都具有非常重要的作用,那么什么样的URL才是既能面向搜索引擎, ...
- 01-TCP/IP概述
TCP/IP 概述 允许不同厂家的各种型号的计算机使用不同操作系统互相进行通信 真正的开放系统 "全球互联网"或"因特网"的基础 2.分层 网络协议通常分不同层 ...
- win10家庭版怎么开启Administrator超级管理员帐户
一.win10家庭版开启administrator方法: 1.通过Cortana搜索cmd,匹配出“命令提示符”,右键以管理员身份运行: 2.在打开的命令提示符窗口输入net user admin ...