密码简单加密
题目描述
将密码按照规则从明文转变为密文,输入为密码明文,密码长度不超过100个字符、不包含空格,需要输出相应密文。转变规则:明文中大写字母转变为小写字母并后移一位,明文中小写字母按照手机9键键盘进行转变(abc–2, def–3, ghi–4, jkl–5, mno–6, pqrs–7, tuv–8 wxyz–9),数字和其他的符号都不做变换。
做题思路
若输入字符串中有大写字母、小写字母就要转变,所以遍历字符串看一下每个字符是大写字母?小写字母?数字?其他特殊字符?这里用到python正则表达式进行匹配。如果是大写字母就先用lower()函数转为小写,然后利用一个已经定义好的小写字母alpaList从index+1索引到下一位小写字母,并添加到结果list中。如果是小写字母,则逐一判断应该转化为哪个数字,并添加到结果list中。如果是数字和其他字符,则直接添加到结果list中。这道题我暂时没有想到别的方法,要是有好的办法大家可以一起分享一下哦。
python代码实现
import re
alphaList = ['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']
str1 = input()
output = []
for x in str1:
if re.match('[A-Z]', x):
xLower = x.lower()
idx = alphaList.index(xLower) + 1
if idx == len(alphaList):
idx = 0
x = alphaList[idx]
elif re.match('[a-z]', x):
if x in 'abc':
x = '2'
elif x in 'def':
x = '3'
elif x in 'ghi':
x = '4'
elif x in 'jkl':
x = '5'
elif x in 'mno':
x = '6'
elif x in 'pqrs':
x = '7'
elif x in 'tuv':
x = '8'
elif x in 'wxzy':
x = '9'
output.append(x)
print(''.join(output))