题目描述
凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
对于原文字符P,其密文字符C满足如下条件:C=(P+x) mod 26
上述是凯撒密码的加密方法,解密方法反之,即:P=(C-x) mod 26
其中x为偏移量。
假设用户可能使用的输入包含大小写字母a~zA~Z、空格和特殊符号,请编写一个程序,对输入字符串进行凯撒密码加密,直接输出结果,其中空格和特殊符号不用进行加密处理。输入
输入两行,第一行是凯撒密码字符串,第二行表示偏移量。
保证偏移量 > 0,字符串长度在 100 以内。输出
输出一行,表示最终得到的字符串。
样例输入
python is good 3样例输出
sbwkrq lv jrrg提示
推荐使用 ord() 和 chr() 函数。
解答:
lst = list(input())
x = eval(input())
for i in range(len(lst)):
if 'a' <= lst[i] <= 'z':
y = (ord(lst[i]) + x - ord('a')) % 26
lst[i] = chr(y + ord('a'))
elif 'A' <= lst[i] <= 'Z':
y = (ord(lst[i]) + x - ord('A')) % 26
lst[i] = chr(y + ord('A'))
print((''.join(map(str,lst))))
难点一:
字符串函数,ord和chr的使用,ord可以获取字符的ASCII值,chr函数可以根据ASCII值求得字符
难点二:
如何将列表类型转换为字符串类型
1.使用map()函数和join()函数
str = ''.join(map(str,list))
map函数将列表中的元素转换为字符串类型,join函数将列表内的元素组合成一个字符串,详见字符串
10.21字符串_zhangyuaizhuzhu的博客-优快云博客
2.使用循环,将其重组成一个字符串
string = ''
list = [1,2,'hello',89]
for i in list:
string = string + str(i) + ' '
print(string)