Python入门程序练习题-凯撒密码
- 题目来自BITmooc
- 题目说明:
恺撒密码是古罗马恺撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文: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()获得输入。
- 代码
# -*- coding: utf-8 -*-
"""
Created on Thu Oct 18 10:54:38 2018
@author: administrator
"""
inp=input()
l=len(inp)
#主要用到的就是chr和ord
#chr把ascii转为str
#ord把str转为ascii
for i in range(l):
if ord('A') <=ord(inp[i])<=ord('Z'):
onew=ord('A')+((ord(inp[i])-ord('A'))+3)%26
elif ord('a') <=ord(inp[i])<=ord('z'):
onew=ord('a')+((ord(inp[i])-ord('a')) + 3 )%26
else:
onew=ord(inp[i])
new=chr(onew)
print(new,end='')
上面是我的代码,答案的代码更简单:
s = input()
t = ""
for c in s:
if 'a' <= c <= 'z': #str是可以直接比较的
t += chr( ord('a') + ((ord(c)-ord('a')) + 3 )%26 )
elif 'A'<=c<='Z':
t += chr( ord('A') + ((ord(c)-ord('A')) + 3 )%26 )
else:
t += c
print(t)```