题解 | #字符串加密#
字符串加密
http://www.nowcoder.com/practice/e4af1fe682b54459b2a211df91a91cf3
while True:
try:
s = list(input())
code = list(input())
#将输入该为大写,方便处理数据,最后输出前再将相应位置改回为小写
code_up = list(map(lambda x:x.upper(), code))
#建立正常字母表备用
chart = []
for i in range(65,91):
chart += [chr(i)]
#将key该为大写,方便处理数据,最后输出前再将相应位置改回为小写
s_upper = []
for i in s:
if i.islower():
s_upper.append(i.upper())
else:
s_upper.append(i)
#将key去重并按原顺序排列
s_uniq = sorted(set(s_upper),key=s_upper.index)
#获得新字母表:1).将s_uniq导入新list;2).利用正常字母表将新字母表剩余部分补充完整
final_chart = []
for i in s_uniq:
final_chart.append(i)
for i in chart:
if i not in final_chart:
final_chart.append(i)
else:
pass
#解码:根据chart和final_chart解码:1).找到chart列表中的对应index;2)根据index在final_chart中解码出原文
decode = []
for i in code_up:
a = chart.index(i)
decode += final_chart[a]
#如果原输入中有小写字母,将decode中的对应位置字母小写
final_text = []
for i,num in enumerate(code):
if num.islower():
final_text += decode[i].lower()
final_text = ''.join(final_text)
print(final_text)
'''
print(decode)
print(code)
print(chart)
print(final_chart)
print(type(a))
print(code_up)
'''
except:
break