【问题描述】
有一行电文,已按下面规律译成密码:
A--Z a--z
B--Y b--y
C--X c--x
......
即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母; 非字母字符不变。编写程序把密码译回原文,并输出密码和原文。
【输入形式】
输入一串密码(长度为10,可包含数字、字母)
【输出形式】
首先输出密码,然后换行后输出原文
【样例输入】
4sdf&13TBD
【样例输出】
4sdf&13TBD
4hwu&13GYW
参考代码:
# -*- coding: utf-8 -*-
"""
Created on Tue Oct 16 15:10:42 2018
@author: Dina
"""
line = input()
d = {
'1':'A',
'2':'B',
'3':'C',
'4':'D',
'5':'E',
'6':'F',
'7':'G',
'8':'H',
'9':'I',
'10':'J',
'11':'K',
'12':'L',
'13':'M',
'14':'N',
'15':'O',
'16':'P',
'17':'Q',
'18':'R',
'19':'S',
'20':'T',
'21':'U',
'22':'V',
'23':'W',
'24':'X',
'25':'Y',
'26':'Z'
}
password = list(line)
result_list = []
print(line)
for i in range(len(password)):
if password[i].isalpha() :
for v in d.values():
if password[i] == v :
for k in d:
if d[k] == v :
password[i] = d[str(26-int(k)+1)]
break
if password[i].islower() :
if password[i].upper() == v :
for k in d:
if d[k] == v :
password[i] = d[str(26-int(k)+1)].lower()
break
result_list.append(password[i])
for re in result_list:
print(re,end='')
提交可通过: