py 二级习题(加密与解密)

题目:

1、比如说,我想    “我喜欢月月”  这句话加密即:将字符串中的每个字符的unicode值全都向后移动三位,即unicode 值加3,然后输出。

2、将按照上述规则加密的文字解密即:将字符串中的每个字符的unicode值全都向前减三。

#caesarencode programme


while True:
    txt = input("please type you word:")

for i in txt:
    if "a" <= i <="z":
        #这是最关键的一步,通过对26取余数,可以再a-z,或者在A-Z,这26个英文字母中重复
        print(chr(ord("a")+(ord(i)-ord("a")+3)%26),end = '')
    elif "A"<= i <="Z":
        print(chr(ord("A")+(ord(i)-ord("A")+3)%26),end = '')
    else:
        print(i,end = '')

#anather way
txt = input("please input you number")
c = 0x4e00
di = {}
for i in range(20902):

#  这也是加密的方法,用的是字典的方法,并且将你输入的每个文字,都转换成了对第一个中文字符的移动,当然这是对中文进行加密,中文的unicode 值范围在0x4e00-0x9fa5之间,一共有20902个文字,当然这里每个要加密的文字向后移动了10451个位置。
    di[chr(c+i)] = chr((i+10451)%20902 + c)  #将所有文字全部移动104521个位置,然后放在字典里,存起来。
    print(len(di))
#对于输入的每个字符,从字典里去找。
for i in txt:
    print(("输出(加解密后)" +di.get(i),end = '')  #another way:   print("输出(加解密后)" + "".join([di.get(i) for i in txt]))
    

我用的第二种方法:

 当然还有解密的方法,未完待续。

原文地址:https://www.cnblogs.com/zijidefengge/p/11546953.html