凯撒密码题的答案有很多,这里我展示一下我自己写的,我使用了ord()函数,可以看到该字符的ASCII,我通过比较ASCII码开确定字符之间的位置信息。
要求:原文:I love Python!
密码:L, ,o,r,y,h, ,S,b,w,k,r,q,!(要求输出字符之间用逗号分隔)
其中A~Z的ASCII码为65到90,a~z的为97到122,我使用m和n两个含有26个字母的字符串来替换输入字符串的字符,也就是替换为向后3位的字符,而最后的xyz要替换为abc,对于非字母字符串,我们不进行任何操作
a=input()
a=list(a)
m="abcdefghijklmnopqrstuvwxyz"
n="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
for i in range(len(a)):
if ord(a[i])>64 and ord(a[i])<91:
if(ord(a[i])+3)>90:
s=ord(a[i])+3-91
a[i]=n[s]
else:
d=ord(a[i])+3-65
a[i]=n[d]
elif ord(a[i])>96 and ord(a[i])<123:
if(ord(a[i])+3)>122:
p=ord(a[i])+3-123
a[i]=m[p]
else:
q=ord(a[i])+3-97
a[i]=m[q]
else:
a[i]=a[i]
for i in range(len(a)-1):
print(a[i],end=",")
print(a[-1])