''' 第一种算法是凯撒加密的基本算法,解题思路是明白算法规则。maketrans()用于创健映射表,before是原先的格式,after是加密规则。要求字母向左移动k位,利用切片完成这一操作。 第二种是大小写互换,after只需拼接的时候大写字母再前,小写字母在后即可完成这个规则要求 第三种相对前面两种就麻烦了,需要先对大小写字母分别逆序,这就利用了python自带的sorted()函数,把字符转换成逆序的列表。 逆序完成后对他们进行字母左移k位,也就是基本算法的要求。之后对他们进行一个拼接利用join()函数,转换成字符串。再用maketrans()创建映射表,translate 进行加密。 string对象是python提供的,在这里提供了大小写字母,这只是python中常用库函数之一,这也是python的优点,强大的,丰富的库函数。 '''
#基本算法
import string
def kaisa(s,k):
lower=string.ascii_lowercase
upper=string.ascii_uppercase
before=string.ascii_letters
after=lower[k:]+lower[:k]+upper[k:]+upper[:k]
table="".maketrans(before,after)#创建映射表
return s.translate(table)
s="Python is a great programming language. i like it"
a=kaisa(s,3)
print(a)
#大写与小写互换算法
import string def kaisa(s): before=string.ascii_letters after=string.ascii_uppercase+string.ascii_lowercase table="".maketrans(before,after)#创建映射表 return s.translate(table) s="Python is a great programming language. i like it" a=kaisa(s) print(a)
小写与大写分别逆序并移动k位进行映射
import string def kaisa(s,k): lower=string.ascii_lowercase upper=string.ascii_uppercase before=string.ascii_letters after1=sorted(lower,reverse=True)#小写逆序 after2=sorted(upper,reverse=True)#大写逆序,变成列表 after3=after1[k:]+after1[:k]+after2[k:]+after2[:k] after4="".join(after3)#拼接,成为字符串 table="".maketrans(before,after4)#创建映射表,Return a translation table usable for str.translate(). return s.translate(table)# return self.__class__(self.data.translate(*args)) s="Python is a great programming language. i like it" a=kaisa(s,3) print(a)