Python入门习题----解密码

【问题描述】

有一行电文,已按下面规律译成密码:

     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='')

提交可通过:

Python入门习题----解密码_第1张图片

 

你可能感兴趣的:(Python)