waker0086 / HW-NKcode

https://www.nowcoder.com/exam/oj?page=1&pageSize=50&search=&tab=%E5%90%8D%E4%BC%81%E7%9C%9F%E9%A2%98&topicId=37
0 stars 0 forks source link

HJ21 简单密码 #22

Open waker0086 opened 2 years ago

waker0086 commented 2 years ago

https://www.nowcoder.com/practice/7960b5038a2142a18e27e4c733855dac

waker0086 commented 2 years ago

思路

我的

三部分处理:

注意非字母的情况

def hj21():
    a=input()
#     L1={ 'abc':2,'def':3, 'ghi':4, 'jkl':5, 'mno':6, 'pqrs':7, 'tuv':8 'wxyz':9}
    #构建映射dict
    L1=[]
    for i in range(97,123):
        L1.append(chr(i))
    L2='22233344455566677778889999'
    L3=dict(zip(L1,L2))
    #加密
    res=''
    #存在其他非数字和字母符号
    for i in a:
#         if i.isdigit():
#             res +=i
        if i.islower():
            res += L3.get(i,'')
        elif i.isupper():
            temp=i.lower()
            n=chr((ord(temp)+1-97)%26+97)
            res += n
        else:
            res +=i
    print(res)
    return

hj21()

非完全一一映射

小写:(list)result += str(list1.index(j)+2) 或(dict)res+=str(d[j])

while True:
    try:
        password = input()
        list1 =  ['abc', 'def', 'ghi', 'jkl', 'mno', 'pqrs', 'tuv', 'wxyz']
        result = ''
        for i in password:
            # 是字母的情况
            if i.isalpha():
                # 是大写字母
                if i.isupper():
                    if i=='Z':
                        result += 'a'
                    else:
                        result += chr(ord(i.lower())+1)
                # 不是大写字母
                else:
                    for j in list1:
                        if i in j:
                            result += str(list1.index(j)+2)
                            break
            # 不是字母的情况
            else:
                result +=i
        print(result)
    except:
        break   
d={
    "abc":2,
    "def":3,
    "ghi":4,
    "jkl":5,
    "mno":6,
    "pqrs":7,
    "tuv":8,
    "wxyz":9,

}
while True:
    try:
        a,res=input(),""
        for i in a:
            if i.isupper():
                if i!="Z":
                    res+=chr(ord(i.lower())+1)
                else:
                    res+="a"
            elif i.islower():
                for j in d.keys():
                    if i in j:
                        res+=str(d[j])
                        break
            else:
                res+=i
        print(res)

    except:
        break