根据提示,在右侧编辑器补充代码,实现凯撒加密:输入一个字符串,对字符串中的字母和数字进行加密(规定加密偏移量为3
,即后移三位),并输出加密后的字符串。
代码如下:
import string
def caesar_cipher(text):
"""接收一个字符串为参数,采用字母表和数字中后面第3个字符代替当前字符的方法
对字符串中的字母和数字进行替换,实现加密效果,返回值为加密的字符串。
例如:2019 abc 替换为5342 def """
########## Begin ##########
lower = string.ascii_lowercase
upper = string.ascii_uppercase
digit = string.digits
before = lower + upper + digit
after = lower[3:]+lower[:3] + upper[3:]+upper[:3]+ digit[3:]+digit[:3]
result = ''.maketrans(before, after)
return text.translate(result)
########## End ##########
if __name__ == '__main__':
plaintext = input()
print(caesar_cipher(plaintext))
#+
相关知识
为了完成本关任务,你需要掌握:
1.string库
2.maketrans() 函数
3.translate()函数
1.要使用string
模块,我们需要先导入: import string
下面介绍几个string
的内置属性:
import string
string.ascii_uppercase #所有大写字母
string.ascii_lowercase #所有小写字母
string.ascii_letters #所有字母
string.digits #所有数字
2.maketrans() 和 translate()
由于两个函数要结合使用,所以就一起介绍了。
(1)maketrans()
方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。
注:两个字符串的长度必须相同,为一 一对应的关系。
maketrans()
方法语法:
str.maketrans(intab, outtab)
intab
-- 字符串中要替代的字符组成的字符串。outtab
-- 相应的映射字符的字符串。
返回值 返回字符串转换后生成的新字符串。
(2)translate()
方法根据参数table
给出的表(包含 256
个字符)转换字符串的字符, 要过滤掉的字符放到 del
参数中。
translate()
方法语法:
str.translate(table[, deletechars])
table
-- 翻译表,翻译表是通过maketrans方法转换而来。deletechars
-- 字符串中要过滤的字符列表。