首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:286903 时间限制: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
nine = {
    'abc':'2', 'def':'3', 'ghi':'4', 'jkl':'5',
    'mno':'6', 'pqrs':'7', 'tuv':'8', 'wxyz':'9'
    }
low = 'abcdefghijklmnopqrstuvwxyza'

n = input()
fin = ''
for i in range(len(n)):
    if n[i].isdigit():
        fin += n[i]
    elif n[i].islower():
        for k in nine.keys():
            if n[i] in k:
                fin += nine[k]
                break
    elif n[i].isupper():
        fin += low[low.index(n[i].lower()) + 1]
print(fin)

发表于 2024-04-15 16:09:39 回复(0)
import re

s = input()
# s = 'YUANzhi1987'


def func(matched):
    if matched.group() in "abc":
        return "2"
    if matched.group() in "def":
        return "3"
    if matched.group() in "ghi":
        return "4"
    if matched.group() in "jkl":
        return "5"
    if matched.group() in "mno":
        return "6"
    if matched.group() in "pqrs":
        return "7"
    if matched.group() in "tuv":
        return "8"
    if matched.group() in "wxyz":
        return "9"
    if matched.group().isupper():
        if matched.group() == "Z":
            return "a"
        return chr(ord(matched.group().lower()) + 1)


result = re.sub("[a-zA-Z]", func, s)
print(result)

编辑于 2024-04-15 10:13:56 回复(0)
dict_lower_trans = {
    'abc': '2',
    'def': '3',
    'ghi': '4',
    'jkl': '5',
    'mno': '6',
    'pqrs': '7',
    'tuv': '8',
    'wxyz': '9',
}

upper_string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

trans_password = ''
for s in input():
    if s.islower():
        for group in dict_lower_trans.keys():
            if s in group:
                trans_password += dict_lower_trans[group]
                break
    elif s.isupper():
        if s == 'Z':
            trans_password += 'a'
        else:
            idx = upper_string.index(s)
            trans_password += upper_string[idx + 1].lower()
    else:
        trans_password += s

print(trans_password)

编辑于 2024-04-11 20:34:37 回复(0)
a = input()
m =str()
for i in a:
    if 'A' <= i <= 'Y':
        i=chr(ord(i)+33)
    elif i == 'Z':
        i='a'
    elif i in ('a','b','c'):
        i='2'
    elif i in ('d','e','f'):
        i='3'
    elif i in ('g','h','i'):
        i='4'        
    elif i in ('j','k','l'):
        i='5'
    elif i in ('m','n','o'):
        i='6'
    elif i in ('p','q','r','s'):
        i='7'
    elif i in ('t','u','v'):
        i='8'
    elif i in ('w','x','y','z'):
        i='9'
    else:
        i=i
    m=m+i
print(m)

发表于 2024-03-09 17:26:40 回复(0)
a=input()
for i in a:
    if 48<=ord(i)<=57:  # 数字
        print(i,end='')
    if 97<=ord(i)<=114: # a-r
        print(chr(int((ord(i)-97)/3)+50),end='')
    if i=='s':          # s
        print('7',end='')
    if 116<=ord(i)<=121: # a-r
        print(chr(int((ord(i)-98)/3)+50),end='')
    if i=='z':          # z
        print('9',end='')
    if 65<=ord(i)<=89: # A-Y
        print(chr((ord(i)+33)),end='')
    if i=='Z': # Z
        print('a',end='')

编辑于 2024-02-21 16:46:35 回复(0)
# 懒得记也记不住ASCII换码函数了,直接字典映射
hax = {
    '0':'0','1':'1','2':'2','3':'3','4':'4','5':'5','6':'6',
    '7':'7','8':'8','9':'9','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'
    }

a = input()
res=[]
for i in a :
    res.append(hax[i])

print("".join(res))

发表于 2023-12-19 17:58:22 回复(0)
a = input().strip()
b = ""
l = {
    "abc": "2", 
    "def": "3", 
    "ghi": "4", 
    "jkl": "5", 
    "mno": "6", 
    "pqrs": "7", 
    "tuv": "8", 
    "wxyz": "9"}
for i in a:
    if i.isupper():
        if i != "Z":
            b += chr(ord(i) + 1).lower()
        else:
            b += "a"
    elif i.islower():
        for j in l:
            if i in j:
                b += l[j]
                break
    else:
        b += i

print(b)

发表于 2023-12-14 23:07:49 回复(0)
import sys

a = ''
for line in sys.stdin:
    for i in range(len(line)):
        if ord(line[i])>=97 and ord(line[i])<123:
            if ord(line[i])<=99:
                a += str(2)
            elif ord(line[i])<=102:
                a += str(3)
            elif ord(line[i])<=105:
                a += str(4)
            elif ord(line[i])<=108:
                a += str(5)
            elif ord(line[i])<=111:
                a += str(6)
            elif ord(line[i])<=115:
                a += str(7)
            elif ord(line[i])<=118:
                a += str(8)
            else:
                a += str(9)
        elif ord(line[i])>=65 and ord(line[i])<91:
            a += chr(ord(line[i])+33) if ord(line[i]) != 90 else "a"
        else:
            a += line[i]
    print(a)
发表于 2023-10-17 01:01:43 回复(0)
import sys

s = input()
num = '0123456789'

def lowershift(letter):
    if letter == 'Z':
        return 'a'
    elif (letter == 'a') or (letter == 'b') or (letter == 'c'):
        return '2'
    elif (letter == 'd') or (letter == 'e') or (letter == 'f'):
        return '3'
    elif (letter == 'g') or (letter == 'h') or (letter == 'i'):
        return '4'
    elif (letter == 'j') or (letter == 'k') or (letter == 'l'):
        return '5'
    elif (letter == 'm') or (letter == 'n') or (letter == 'o'):
        return '6'
    elif (letter == 'p') or (letter == 'q') or (letter == 'r') or (letter == 's'):
        return '7'
    elif (letter == 't') or (letter == 'u') or (letter == 'v'):
        return '8'
    elif (letter == 'w') or (letter == 'x') or (letter == 'y')or (letter == 'z'):
        return '9'
    else:
        lower = letter.lower()
        new_letter = chr(ord(lower) + 1)
        return new_letter

for i in s:
    if num.count(i) == 1:
        print(i,end='')
    else:
        print(lowershift(i), end='')
发表于 2023-10-02 09:28:13 回复(0)
提供一个不同的思路,用字典的功能去完成
line=input()
skf=''
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'}
for i in line:
    if i.isdigit():
        skf+=i
    else:
        j=str(dic[i])
        skf+=j
print(str(skf))
发表于 2023-09-21 21:33:40 回复(0)
input_str = input()
table = {(1,):1, ('a','b','c'):2, ('d','e','f'):3, ('g','h','i'):4, ('j','k','l'):5, ('m','n','o'):6, ('p','q','r','s'):7 ,('t','u','v'):8, ('w','x','y','z'):9, (0,):0}
if (1 <= len(input_str) <= 100):
    for i in input_str:
        if 'A' <= i < 'Z':
            print(chr(ord(i.lower())+1), end='')
        elif i == 'Z':
            i = 'a'
            print(i, end='')
        elif 'a' <= i <= 'z':
            for j in table.keys():
                if i in j:
                    print(table[j], end='')
        else:
            print(i, end='')
else:
    print('wrong!')
发表于 2023-09-20 18:03:53 回复(0)
code_input = input()
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',
}
for i in range(10):
    dic[str(i)] = str(i)
code_output = ''
for code in code_input:
    if code.isupper():
        if code !='Z':
            code_output = code_output + chr(ord(code.lower()) + 1)
        else:
            code_output = code_output + 'a'
    else:
        code_output = code_output + dic[code]
print(code_output)
or
code_input = input()
dic_input = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
dic_output = '22233344455566677778889999bcdefghijklmnopqrstuvwxyza0123456789'
code_output = ''
for code in code_input:
    code_output = code_output + dic_output[dic_input.index(code)]
print(code_output)


发表于 2023-09-17 11:13:42 回复(0)

letter_list = ["1", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz", "0"]
password = input().strip()
lst = []
temp_lst = "".join(letter_list[1:9])
for i in password:
    if i.isdigit():
        lst.append(str(i))
        # print(i,end=' ')
    else:
        for j in letter_list:
            if str(i).isupper():
                lowercase = i.lower()
                if lowercase == "z":
                    lst.append("a")
                    break
                else:
                    # print(temp_lst.index(lowercase), end=' ')
                    temp = temp_lst[temp_lst.index(lowercase) + 1]
                    # print(i, end=' ')
                    lst.append(temp)
                    break
            elif str(i).islower():
                if i in j:
                    i = letter_list.index(j) + 1
                    # print(i,end='')
                    lst.append(str(i))
            else:
                continue

# print(lst)
password1 = "".join(lst)
print(password1)
发表于 2023-09-11 11:51:02 回复(0)
A = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
B = "22233344455566677778889999bcdefghijklmnopqrstuvwxyza0123456789"
s = input()
re = ""
for i in s:
    re += B[A.index(i)]

print(re)
发表于 2023-09-07 16:55:43 回复(0)
import sys
password = input().strip()
ps_list = []
word_int = {'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 ps in password:
if 'A' <= ps <= 'Z':
chr_int = ord(ps) + 32 + 1
if chr_int > 122:
ps_list.append('a')
else:
ps_list.append(chr(chr_int))
elif 'a' <= ps <= 'z':
ps_list.append(word_int[ps])
else:
ps_list.append(ps)
print(''.join(ps_list))
发表于 2023-09-01 22:16:52 回复(0)
简单粗暴
def SimpleCode(code):
    newcode = []
    for i in code:
        if i == '1':
            newcode.append(i)
        elif i in 'abc':
            newcode.append('2')
        elif i in 'def':
            newcode.append('3')
        elif i in 'ghi':
            newcode.append('4')
        elif i in 'jkl':
            newcode.append('5')
        elif i in 'mno':
            newcode.append('6')
        elif i in 'pqrs':
            newcode.append('7')
        elif i in 'tuv':
            newcode.append('8')
        elif i in 'wxyz':
            newcode.append('9')
        elif i in '0':
            newcode.append('0')
        elif 'A' <= i < 'Z':
            newcode.append(chr(ord(i.lower())+1))
        elif i == 'Z':
            newcode.append('a')
        elif i.isdigit():
            newcode.append(i)
    print(''.join(newcode))


if __name__ == "__main__":
    code = input()
    SimpleCode(code)


发表于 2023-09-01 02:03:01 回复(0)
import sys

for line in sys.stdin:
    a = line.strip()
    res=''
    tem=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
    tem_num=[['abc',2],['def',3],['ghi',4],['jkl',5],['mno',6],['pqrs',7],['tuv',8],['wxyz',9]]
    for i in a:
        #判断是不是大写
        if 'A'<=i<='Z':
            ii=i.lower()
            index=tem.index(str(ii))
            res+=tem[(index+1)%26]
            continue
        #判断小写
        if 'a'<=i<='z':
            for j in tem_num:
                if i in j[0]:
                    res+=str(j[1])
                    continue

        #其他符号不变
        else:
            res+=i
    print(res)

发表于 2023-08-28 17:15:16 回复(0)
#最简单粗暴的办法
import re

a = list(input())
b = {
    "1": "1",
    "2": "abc",
    "3": "def",
    "4": "ghi",
    "5": "jkl",
    "6": "mno",
    "7": "pqrs",
    "8": "tuv",
    "9": "wxyz",
    "0": "0",
}
c = "abcdefghijklmnopqrstuvwxyz"
for number, i in enumerate(a):
    if i.isupper():
        i = i.lower()
        for k in range(len(c)):
            if i == c[k]:
                if k == len(c) - 1:
                    a[number] = c[0]
                else:
                    a[number] = c[k + 1]
    else:
        for j in b.keys():
            if not re.findall(i, b[j]) == []:
                a[number] = j
                break

for i in a:
    print(i, end="")

发表于 2023-08-26 09:27:26 回复(0)