题解 | #简单密码#
简单密码
http://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac
利用正则表达式进行匹配或替换
解法一
import re
while True:
try:
passwd = list(input().strip())
passwd_origin = []
for item in passwd:
if not re.match('[0-9]', item) and not re.match('[^a-zA-Z0-9]', item):
if re.match('[a-z]', item):
if re.match('[a-c]', item):
passwd_origin.append(2)
elif re.match('[d-f]', item):
passwd_origin.append(3)
elif re.match('[g-i]', item):
passwd_origin.append(4)
elif re.match('[j-l]', item):
passwd_origin.append(5)
elif re.match('[m-o]', item):
passwd_origin.append(6)
elif re.match('[p-s]', item):
passwd_origin.append(7)
elif re.match('[t-v]', item):
passwd_origin.append(8)
elif re.match('[w-z]', item):
passwd_origin.append(9)
elif re.match('[A-Y]', item):
passwd_origin.append(chr(ord(item) + 33))
elif re.match('[Z]', item):
passwd_origin.append('a')
else:
passwd_origin.append(item)
passwd_origin = [str(i) for i in passwd_origin]
passwd_origin_str = ''.join(passwd_origin)
print(passwd_origin_str)
except:
break解法二
import re
while True:
try:
passwd = input().strip()
passwd_origin = re.sub("[a-c]", "2", passwd)
passwd_origin = re.sub("[d-f]", "3", passwd_origin)
passwd_origin = re.sub("[g-i]", "4", passwd_origin)
passwd_origin = re.sub("[j-l]", "5", passwd_origin)
passwd_origin = re.sub("[m-o]", "6", passwd_origin)
passwd_origin = re.sub("[p-s]", "7", passwd_origin)
passwd_origin = re.sub("[t-v]", "8", passwd_origin)
passwd_origin = re.sub("[w-z]", "9", passwd_origin)
def high_low(matched):
str_up = matched.group(0)
asc = ord(str_up) + 33
value = chr(asc)
return str(value)
passwd_origin = re.sub("[A-Y]", high_low, passwd_origin)
passwd_origin = re.sub("[Z]", "a", passwd_origin)
print(str(passwd_origin))
except:
break
