您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python练习题之凯撒密码

5b51 2022/1/14 8:15:49 python 字数 4122 阅读 304 来源 www.jb51.cc/python

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

概述

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

原文: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????????????????????????????????????????????????????????????????????????????????????????????????

假设用户可能使用的输入包含大小写字母azAZ、空格和特殊符号,请编写一个程序,对输入字符串进行恺撒密码加密,直接输出结果,其中空格不用进行加密处理。使用input()获得输入。????????????????????????????????????????????????????????????????????????????????????????????????

这是第三周的练习题,看到凯撒密码,想到了上课做的练习

weekStr="星期一星期二星期三星期四星期五星期六星期日"
weekId=eval(input("请输入数字1-7"))
pos=(weekId-1)*3
print(weekStr[pos:pos+3])

跟凯撒密码有异曲同工之处。所以我的代码就是再找个基础上完成的。但我的代码有两个问题,一是没有转变大小写,二是没有利用循环。

以下是我参考完成的代码

C="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
c=C.lower()
inputstr=input()
for i in inputstr:
    if i in c:
        b=c.find(i)
        pos=(b+3) % 26
        print(c[pos],end="")
    elif i in C:
        b=C.find(i)
        pos=(b+3) % 26
        print(C[pos],end="")
    elif i in ' ':
        print(' ',end="")
    else:
        print(i,end="")

这段代码比较繁琐,很有新手编程的感觉。
所以我又参考了另一段代码

a = input()
for p in a:
    if 'a' <= p <= 'z':
        print(chr(ord('a') + (ord(p)-ord('a') +3) % 26),end='')
    elif 'A' <= p <= 'Z':
        print(chr(ord('A') + (ord(p)-ord('A') +3) % 26),end='')
    else:
        print(p, end='')
#注:ord(x)	x为字符,返回其对应的Unicode编码
#	chr(u)	u为Unicode编码,返回其对应的字符

这段代码更简洁,但属于我一下子想象不到的。
if循环判断p是大写还是小写,然后利用ord得到转换后的编码,再用chr把编码变为字符。

总结

以上是编程之家为你收集整理的python练习题之凯撒密码全部内容,希望文章能够帮你解决python练习题之凯撒密码所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶