恺撒密码 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='')#方法一(2):
#另一种表达,可以解释“逻辑或只能 “A or B”不能“A or B or C”
sr=input()
n=len(sr)
cheng=' '
for i in range(n):if sr[i]=='X'or sr[i]=='x':cheng+=chr(ord(sr[i])-23)elif sr[i]=='Y' or sr[i]=='y':cheng+=chr(ord(sr[i])-23)elif sr[i]=='Z' or sr[i]=='z':cheng+=chr(ord(sr[i])-23)elif sr[i]==' ':cheng+=sr[i]else:cheng+=chr(ord(sr[i])+3)
print(cheng[1:n+1])#方法一(3):
#可以将大写的也改变成对应的大写
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='')#方法二:
#p="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"#这道题目中这样写也可以
p="abcdefghijklmnopqrstuvwxyz"
n = input()
for i in n:if i ==" ":  #判断为空格特殊情况print(" ", end="")else:a=p.find(i)  #查找索引位置b=(a+3)%26print(p[b],end="")#方法三(1):
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 = 0elif x == 24:x = 1else:x = x + 3print(K[x],end="")else:print(" ",end="")#方法三(2):
#大写也可以转换成对应的大写字母
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 = 0elif x == 24:x = 1elif x == 25:x = 3elif x == 49:x = 26elif x == 50:x = 27elif x == 51:x = 28else:x = x + 3print(K[x],end="")else:print(" ",end="")

题目来源:python123.io

ps:简单快速解决此题的关键在于充分理解掌握chr()和ord()函数

python练习题15:恺撒密码 I相关推荐

  1. Python练习:恺撒密码 I

    练习:恺撒密码 I 平台:Python123.io 教师:嵩天 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的 ...

  2. Python练习题:凯撒密码 的一种简单解法

    在学习Python基本数据类型部分的内容时,字符串部分所含的函数比较多,类型比较复杂.这道凯撒密码的题有多种解法.这里介绍一种解法.设计到了索引.for-in-循环语句.if条件语句.字符串拼接等知识 ...

  3. python练习——恺撒密码 I

    恺撒密码 I 描述 凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下: 原文:A ...

  4. 恺撒密码python代码

    恺撒密码python代码 小白自己随便写的,最笨的办法 问题: 恺撒密码 ‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫ ...

  5. Python基础编程入门实例:恺撒密码

    文章目录 Python基础编程入门实例:恺撒密码 一.什么是恺撒密码 二.程序运行环境 三.恺撒密码:加密 3.1.恺撒密码加密实例程序 3.2.恺撒密码加密实例程序运行结果 四.恺撒密码:解密 4. ...

  6. 恺撒密码 python

    恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬ ...

  7. 恺撒密码(Python练习)

    恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬ ...

  8. 恺撒密码加解密程序(Python)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.确定恺撒密码原理,用公式表示 二.子函数的确立 1.加密部分 2.解密部分 3.选择加密还是解密 三.确定各个子函 ...

  9. python恺撒密码 B

    恺撒密码 B ‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭ ...

最新文章

  1. oracle数据库修改写入状态,【学习笔记】Oracle oradebug 使用oradebug修改数据库SCN方法案例...
  2. 如何从零开始学python_从零开始学Python【4】--numpy
  3. 修改html时webpack热更新,利用webpack实现对html文件的热更新
  4. struts2控制标签(一)选择标签,iterator标签,append标签
  5. LVS的三种负载均衡以及高可用原理(VS/NAT、VS/TUN、VS/DR)
  6. Uncaught (in promise) Error: Request failed with status code 500
  7. a b*c的C语言表达式为,在C语言的if语句中,用作判断的表达式为 ______
  8. 雨课堂知识点总结(十七)
  9. Spring定时任务的几种实现方式
  10. 拦截器如何获取@requestbody_分布式系统中如何优雅地追踪日志(原理篇)
  11. C语言实现随机发纸牌
  12. 气动调节阀基本结构图
  13. CAD迷你画图 for mac
  14. 软件开发流程(Software development process)
  15. 永远做重要而不紧急的事
  16. python学习群发邮件
  17. 感应加热计算机仿真软件,一种新型感应加热电源调功方式的研究与计算机仿真...
  18. kindle亚马逊个人文档不显示_Kindle个人文档服务
  19. Discarding record on action DISCARD on error 0
  20. 用python爬取前程无忧网大数据岗位信息并分析

热门文章

  1. 什么是大数据?漫谈大数据仓库与挖掘系统
  2. 6阶群的非平凡子群_简明算术教程——第二章 群——第9节 可解群
  3. 分布式数据库或成为新增量
  4. 文献管理工具EndNote使用
  5. 简单聊聊PostgreSQL buffer与OS cache
  6. java 改变窗口大小_java 如何让程序窗口随屏幕大小改变
  7. 百度 android 市场占有率,百度数据:11Q1中国Android手机市场研究
  8. Linux常用服务部署与优化
  9. DAPI(Distributed Application Program Interface)
  10. EXCEL如何合并单元格且保留全部内容