题解 | #简单密码#

简单密码

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
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务