题解 | #简单密码#
简单密码
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