输入格式
一个代表星期几的单词,Monday
, Tuesday
, Wednesday
, Thursday
, Friday
, Saturday
, Sunday
中的一个
输出格式
输出:
用恺撒加密方法对上述文件内容进行加密的结果。
相关知识
凯撒密码
在密码学中,凯撒密码是一种最简单且最广为人知的加密技术。恺撒密码
据传是古罗马恺撒大帝用来保护重要军情的加密系统。它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替换成密文。例,当偏移量是 3
的时候,所有的字母 A
将被替换成 D
,B
变成 E
,以此类推,小写字母也一样处理,其他字符忽略,不作任何改变。
编程要求
在右侧编辑器中的 Begin-End 区间补充代码,完成文件分析与加密。具体要求如下:
用恺撒加密方法对上述文件内容进行加密,为提高加密强度,约定输入一个秘密单词来产生偏移量;
代码实现
import string
# 读文件,返回字符串
def read_file(file):
with open(file, 'r', encoding='utf-8') as f:
return f.read()
#
def offset_cal(day):
"""用字符串中字符ASCII值的和对26取模为偏移量 """
sum_of_ch = 0
for c in day:
sum_of_ch = sum_of_ch + ord(c)
offset = sum_of_ch % 26
return offset
def kaisa(txt, number):
# 补充你的代码
lower = string.ascii_lowercase # 小写字母
upper = string.ascii_uppercase # 大写字母
before = string.ascii_letters
after = lower[number:] + lower[:number] + upper[number:] + upper[:number]
table = ''.maketrans(before, after) # 创建映射表
return txt.translate(table)
if __name__ == '__main__':
filename = 'mayun.txt' # 读取的文件名
text = read_file(filename) # text为字符串
secret_word = input()
offset_number = offset_cal(secret_word)
print(kaisa(text, offset_number))
测试说明
平台会对你编写的代码进行测试:
测试输入:Tuesday
;
预期输出:
Ayplk 3 aptlz mvy bupclyzpaf. Hss mhpslk. P hwwsplk mvy Ohychyk mvy 10 aptlz. Hss mhpslk, aolf kvu’a lclu dhua av zll tl. Mvy aol shza aptl, P dlua av aol alhjolyz’ jvsslnl dopjo dhz jvuzpklylk aol aopyk vy mvbyao jshzz vm tf jpaf. P hwwsplk qviz mvy 30 aptlz. Nva ylqljalk. Pa dhz zv kpmmpjbsa ha aoha aptl, P dhz zv mybzayhalk. Iljhbzl P ahbnoa pu aol bupclyzpaf. Tf whf dhz $10 h tvuao. Iljhbzl P jvbsk uva mpuk h nvvk qvi pu 1994.