[题目描述]
小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。
经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子)
1. 原文中所有的字符都在字母表中被循环左移了三个位置(dec→ghf)
2. 逆序存储(abcd→dcba)
3. 大小写反转(abXY→ABxy)
输入:
一个加密的字符串。(长度小于 50 且只包含大小写字母)
输出:
输出解密后的字符串。
样例输入1
GSOOWFASOq
样例输出1
Trvdizrrvj
来源/分类(难度系数)
完整代码展示:
a=list(input())
for i in range(0,len(a)):
if a[i].islower():
a[i]=a[i].upper()
else:
a[i]=a[i].lower()
b=['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','a','b','c']
c=['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','A','B','C']
a.reverse()
d=[]
for i in range(0,len(a)):
for j in range(0,26):
if a[i]==b[j]:
d.append(b[j+3])
if a[i]==c[j]:
d.append(c[j+3])
sum=""
for k in range(0,len(d)):
sum+=d[k]
print(sum)
代码解释:
“a=list(input()) ”,让用户输入需要解密的字符串,并将其储存在列表a中。
“for i in range(0,len(a)):
if a[i].islower():
a[i]=a[i].upper()
else:
a[i]=a[i].lower() ”,依次遍历列表a中所有元素,进行加密的最后一步的逆操作
:将大写的字符替换为小写,将小写的字符替换为大写。
“b=['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','a','b','c']
c=['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','A','B','C']
a.reverse() ”,建立列表b和列表c,分别用于储存a~z~c和A~Z~C的29个字符。接着进行加密操作的中间一步的逆操作:将储存已加密的字符的列表a反转。
“d=[]
for i in range(0,len(a)):
for j in range(0,26):
if a[i]==b[j]:
d.append(b[j+3])
if a[i]==c[j]:
d.append(c[j+3]) ”,进行加密操作的第一步的逆操作:建立个空列表d,依次遍历列表a中所有元素,并一一与列表b和列表c中所有元素进行对比:如果a[i]==b[j],则将b[j]后面三位的b[j+3]添加进列表d中;a[i]==c[j]同理。
“sum=""
for k in range(0,len(d)):
sum+=d[k]
print(sum) ”,遍历结束后,建立一个空字符串sum,从左至右依次连接d中所有元素。连接完成后,打印sum。
运行效果展示:
(声明:以上内容均为原创)