中国大学MOOC—python基础课习题——凯撒密码题

凯撒密码题的答案有很多,这里我展示一下我自己写的,我使用了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])

猜你喜欢

转载自blog.csdn.net/qq_912917507/article/details/81129269