首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:303799 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
现在有一种密码变换算法。
九键手机键盘上的数字与字母的对应: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,把密码中出现的小写字母都变成九键键盘对应的数字,如:a 变成 2,x 变成 9.
而密码中出现的大写字母则变成小写之后往后移一位,如:X ,先变成小写,再往后移一位,变成了 y ,例外:Z 往后移是 a 。
数字和其它的符号都不做变换。
数据范围: 输入的字符串长度满足

输入描述:

输入一组密码,长度不超过100个字符。



输出描述:

输出密码变换后的字符串

示例1

输入

YUANzhi1987

输出

zvbo9441987
res = ""
alph_map = {"a":2, "b":2, "c":2, "d":3, "e":3,  "f":3, "g":4, "h":4, "i":4, "j":5, "k":5, "l":5,
       "m":6, "n":6, "o":6, "p":7, "q":7, "r":7, "s":7, "t":8, "u":8, "v":8, "w":9, "x":9,
             "y":9, "z":9}
for i in input():
    if i.isalpha():
        if 65<=ord(i)<90:
            i = chr(ord(i)+33)
            res += i
        elif i == "Z":
            res += "a"
        else:
            res += str(alph_map[i])
    else:
        res += i
print(res)

发表于 2021-06-05 01:48:12 回复(0)
写个很蠢但很好理解的方法:
import sys

dic = {'a':'2','b':'2','c':'2','d':'3','e':'3','f':'3',
       'g':'4','h':'4','i':'4','j':'5','k':'5','l':'5',
       'm':'6','n':'6','o':'6','p':'7','q':'7','r':'7',
       's':'7','t':'8','u':'8','v':'8','w':'9','x':'9',
       'y':'9','z':'9','A':'b','B':'c','C':'d','D':'e',
       'E':'f','F':'g','G':'h','H':'i','I':'j','J':'k',
       'K':'l','L':'m','M':'n','N':'o','O':'p','P':'q',
       'Q':'r','R':'s','S':'t','T':'u','U':'v','V':'w',
       'W':'x','X':'y','Y':'z','Z':'a','0':'0','1':'1',
       '2':'2','3':'3','4':'4','5':'5','6':'6','7':'7',
       '8':'8','9':'9'}
code = ''
for s in sys.stdin:
    for i in s.strip():
        code += dic[i]
    print(code)

发表于 2021-05-31 19:04:53 回复(0)
import sys

str1 = 'abcdefghijklmnopqrstuvwxyz'
str2 = '22233344455566677778889999'

def func(s):
    res = []
    for c in s:
        # 小写字母
        if c.islower():
            idx = str1.index(c)
            res.append(str2[idx])
        # 大写字母
        elif c.isupper():
            tmp_c = c.lower()
            idx = str1.index(tmp_c)
            # 如果是最后一个字母,则为a
            if  idx == len(str1)-1:
                idx = 0
            else:
                idx += 1
            res.append(str1[idx])
        else:
            res.append(c)
    return ''.join(res)


for line in sys.stdin:
    print(func(line.strip()))

发表于 2021-05-09 22:01:59 回复(0)
while True:
    try:
        s = input()
        dict1="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        dict2="bcdefghijklmnopqrstuvwxyza22233344455566677778889999"

        out = ''
        for i in s:
            if i.isalpha():
                index = dict1.find(i)
                out += dict2[index]
            else:
                out += i
        print(out)
    except:
        break

发表于 2021-04-07 16:43:07 回复(0)
def szm(str):
    sc=''
    if str<='c':
        sc+='2'
    if str>='d' and str<='f':
        sc+='3'
    if str>='g' and str<='i':
        sc+='4'
    if str>='j' and str<='l':
        sc+='5'
    if str>='m' and str<='o':
        sc+='6'
    if str>='p' and str<='s':
        sc+='7'
    if str>='t' and str<='v':
        sc+='8'
    if str>='w': 
        sc+='9'
    return sc

def dzm(str):
    sc=''
    zm='abcdefghijklmnopqrstuvwxyz'
    new=str.lower()
    addre=zm.find(new)
    if addre != 25:
        sc+=zm[addre+1]
    else:
        sc+='a'
    return sc

def mm(str):
    n=len(str)
    sc=''
    zm='abcdefghijklmnopqrstuvwxyz'
    zmb='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
    for i in range(n):
        if str[i]>='a' and str[i]<='z':
            sc+=szm(str[i])
        if str[i]>='A' and str[i]<='Z':
            sc+=dzm(str[i])
        if str[i] not in zm and str[i] not in zmb:
            sc+=str[i]
    print(sc)

while True:
    try:
        a=input()
        mm(a)
    except:
        break

发表于 2021-04-03 22:35:11 回复(0)
letter = 'abcdefghijklmnopqrstuvwxyz'


def Lettolet(Lett):
    lett = Lett.lower()
    for i in range(len(letter)):
        if letter[i] == lett:
            return letter[(i + 1) % len(letter)]


def lettonum(let):
    if let == 'a' or let == 'b' or let == 'c':
        return 2
    if let == 'd' or let == 'e' or let == 'f':
        return 3
    if let == 'g' or let == 'h' or let == 'i':
        return 4
    if let == 'j' or let == 'k' or let == 'l':
        return 5
    if let == 'm' or let == 'n' or let == 'o':
        return 6
    if let == 'p' or let == 'q' or let == 'r' or let == 's':
        return 7
    if let == 't' or let == 'u' or let == 'v':
        return 8
    if let == 'w' or let == 'x' or let == 'y' or let == 'z':
        return 9


while True:
    try:
        string = input()
        sec = ''
        for i in range(len(string)):
            if string[i].isdigit():
                sec = sec + string[i]
            elif string[i] == string[i].upper():
                sec = sec + str(Lettolet(string[i]))
            else:
                sec = sec + str(lettonum(string[i]))
        print(sec)
    except:
        break
发表于 2021-03-27 18:44:22 回复(0)
while True:
    try:
        str = input()
        password = []
        for x in str:
            if x.isupper() == True and x != 'Z':
                password.append(chr(ord(x) + 33))
            elif x == 'Z':
                password.append('a')
            elif x.islower() == True:
                if x in 'abc':
                    password.append('2')
                if x in 'def':
                    password.append('3')
                if x in 'ghi':
                    password.append('4')
                if x in 'jkl':
                    password.append('5')
                if x in 'mno':
                    password.append('6')
                if x in 'pqrs':
                    password.append('7')
                if x in 'tuv':
                    password.append('8')
                if x in 'wxyz':
                    password.append('9')
            else:
                password.append(x)
        print(''.join(password))
    except EOFError:
        break

发表于 2021-03-26 19:00:29 回复(0)
import re
s2num = {
    "abc": "2",
    "def": "3",
    "ghi": "4",
    "jkl": "5",
    "mno": "6",
    "pqrs": "7",
    "tuv": "8",
    "wxyz": "9"
}
DS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
DS2XS = {}
for i in range(len(DS)):
    DS2XS[DS[i]] = i + 1
    
DS2XS["Z"] = 0
    
real_passwd = ""
while True:
    try:
        see_passwd = input()
        for s in see_passwd:
            if re.match(r"[^A-Za-z]", s):
                real_passwd += s
            elif s in DS2XS:
                real_passwd += DS[DS2XS[s]].lower()
            else:
                for k in s2num:
                    if s in k:
                        real_passwd += s2num[k]
                        break
        print(real_passwd)
    except:
        break
发表于 2021-03-21 16:44:53 回复(0)
dic={'abc':'2','def':'3','ghi':'4','jkl':'5','mno':'6','pqrs':'7','tuv':'8','wxyz':'9'}
while True:
    try:
        new = ''
        string = input()
        for i in string:
            ASCII = ord(i)
            if ASCII>=65 and ASCII<=90:
                new+=chr((ASCII+33-97)%26+97)
            elif ASCII>=97and ASCII<=122:
                for j in dic.keys():
                    if i in j:
                        new+=dic[j]
                        break
            else:
                new+=i
        print(new)
    except:
        break
发表于 2021-03-19 10:16:49 回复(0)
while True:
    try:
        s = input()
        res =""
        dic = {
            '1':['1'],
            '2':['a','b','c'],
            '3':['d','e','f'],
            '4':['g','h','i'],
            '5':['j','k','l'],
            '6':['m','n','o'],
            '7':['p','q','r','s'],
            '8':['t','u','v'],
            '9':['w','x','y','z'],
            '0':['0']
        }
        for i in range(len(s)):
            if s[i].isalpha():
                if s[i].islower():
                    for j in dic:
                        if s[i] in dic[j]:
                            res+=j
                else:
                    if s[i] == 'Z':
                        res += 'a'
                    else:
                        res+=chr(ord(s[i])+1).lower()
            elif s[i].isdigit():
                res += s[i]
        print(res)
    except:
        break
发表于 2021-03-12 09:44:27 回复(0)
s=''
while True:
    try:
        a=input()
        for i in range(len(a)):
            if a[i].isupper():
                if a[i]!='Z': s+=chr(ord(a[i].lower())+1)
                if a[i]=='Z': s+='a'
            if a[i].islower():
                if a[i] in 'abc': s+='2'
                if a[i] in 'def': s+='3'
                if a[i] in 'ghi': s+='4'
                if a[i] in 'jkl': s+='5'
                if a[i] in 'mno': s+='6'
                if a[i] in 'pqrs': s+='7'
                if a[i] in 'tuv': s+='8'
                if a[i] in 'wxyz': s+='9'
            if a[i].isalpha()== False: s+=a[i]
    except:
        break
print(s)

发表于 2021-03-01 18:22:36 回复(0)
import re
lower = re.compile(r'[a-z]')
upper = re.compile(r'[A-Z]')
while True:
    try:
        pw = input()
        if len(pw) >100 : break
        res = list(pw)
        mydict = {"abc":"2","def":"3","ghi":"4","jkl":"5","mno":"6","pqrs":"7","tuv":"8","wxyz":"9"}
        for i in range(len(res)) :
            
            if lower.search(res[i]) :
                for j in mydict.keys():
                    if res[i] in j :
                        res[i] = mydict[j]
            if upper.search(res[i]) :
                if res[i] == "Z" :
                    res[i] = "a"
                    continue
                res[i] = chr(ord(res[i].lower()) + 1)
        print("".join(res))
    except:
        break

发表于 2021-02-20 15:00:22 回复(0)
alphabet1 = {
    "a": "2", "b": "2", "c": "2",
    "d": "3", "e": "3", "f": "3",
    "g": "4", "h": "4", "i": "4",
    "j": "5", "k": "5", "l": "5",
    "m": "6", "n": "6", "o": "6",
    "p": "7", "q": "7", "r": "7", "s": "7",
    "t": "8", "u": "8", "v": "8",
    "w": "9", "x": "9", "y": "9", "z": "9",
}
alphabet2 = "_ABCDEFGHIJKLMNOPQRSTUVWXYZ"
x = raw_input()
y = []
for i in range(0, len(x)):
    if x[i].isdigit():
        y.append(x[i])
    if x[i].islower():
        y.append(alphabet1[x[i]])
    if x[i].isupper():
        temp = (alphabet2.index(x[i])+1) % 26
        if temp == 0:
            temp = 26
        y.append(alphabet2[temp].lower())
print "".join(y)

发表于 2021-01-14 00:01:37 回复(0)
letter2number = {'abc': '2', 'def': '3', 'ghi': '4', 'jkl': '5', 'mno': '6', 'pqrs': '7', 'tuv': '8', 'wxyz': '9'}
password = input().rstrip()
wordlist = list(password)
lowercase = 0
for j in range(len(wordlist)):
    for i in letter2number:
        if wordlist[j] in i:
            wordlist[j] = letter2number[i]
            lowercase = 1
            break
    if not wordlist[j].isdigit() and not lowercase:
        if wordlist[j] == 'Z':
            wordlist[j] = 'a'
        else:
            wordlist[j] = chr(ord(wordlist[j]) + 33)
    lowercase = 0
print(''.join(wordlist))

编辑于 2020-12-23 10:50:18 回复(0)
import sys


a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"
b = "bcdefghijklmnopqrstuvwxyza222333444555666777788899990123456789"
output = ""

for s in sys.stdin:
    s = s.strip()
    for c in s:
        output += b[a.index(c)]
        
print(output)

发表于 2020-12-14 20:17:21 回复(0)
hash_dict = {
    'abc': '2',
    'def': '3',
    'ghi': '4',
    'jkl': '5',
    'mno': '6',
    'pqrs': '7',
    'tuv': '8',
    'wxyz': '9'
}
while True:
    try:
        string = list(input())
        for i in range(len(string)):
            if string[i].islower():
                for k in hash_dict:
                    if string[i] in k:
                        string[i] = hash_dict[k]
                        
            elif string[i].isupper():
                if string[i] == 'Z':
                    string[i] = 'a'
                else:
                    string[i] = (chr(ord(string[i]) + 1)).lower()
        print(''.join(string))
    except:
        break
发表于 2020-11-29 15:17:53 回复(0)
import string

a = input()

upper = string.ascii_uppercase
lower = string.ascii_lowercase

sercert_list = [['abc','2'],['def','3'],['ghi','4'],['jkl','5'],['mno','6'],['pqrs','7'],['tuv','8'],['wxyz','9']]

new_passwd = ''

for i in a:
    if i in upper:
        if i == 'Z':
            new_i = 'a'
            new_passwd = new_passwd + new_i
        else:
            upper_index = upper.index(i)
            new_i = lower[upper_index+1]
            new_passwd = new_passwd + new_i
    elif i in lower:
        for j in sercert_list:
            if i in j[0]:
                new_i = j[1]
                new_passwd = new_passwd + new_i

    else:
        new_passwd = new_passwd + i

print(new_passwd)

发表于 2020-11-25 23:04:48 回复(0)
# 2020年11月16日21:25:08
while True:
    try:
        clear = input()
        password = ""
        for i in range(len(clear)):
            if "A"<=clear[i]<"Z":
                password += chr(ord(clear[i].lower())+1)
            elif clear[i] == "Z":
                password += "a"
            elif clear[i] in "abc":
                password += "2"
            elif clear[i] in "def":
                password += "3"
            elif clear[i] in "ghi":
                password += "4"
            elif clear[i] in "jkl":
                password += "5"
            elif clear[i] in "mno":
                password += "6"
            elif clear[i] in "pqrs":
                password += "7"
            elif clear[i] in "tuv":
                password += "8"
            elif clear[i] in "wxyz":
                password += "9"
            else:
                password += clear[i]
        print(password)
    except:
        break
        

编辑于 2020-11-16 21:53:11 回复(0)