首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:320829 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
\hspace{15pt}规定这样一种密码的变换方法:
\hspace{23pt}\bullet\,对于密码中的小写字母,参考九键手机键盘,将它们映射为对应的数字,具体地,\mathtt{abc} 对应数字 2\mathtt{def} 对应数字 3\mathtt{ghi} 对应数字 4\mathtt{jkl} 对应数字 5\mathtt{mno} 对应数字 6\mathtt{pqrs} 对应数字 7\mathtt{tuv} 对应数字 8\mathtt{wxyz} 对应数字 9
\hspace{23pt}\bullet\,对于密码中的大写字母,先将其转换为小写,然后向后移动一位,即 \mathtt{Z} 转换为 \mathtt{a}\mathtt{A} 转换为 \mathtt{b}\mathtt{B} 转换为 \mathtt{c}\cdots\mathtt{Y} 转换为 \mathtt{z}\mathtt{Z} 转换为 \mathtt{a}
\hspace{23pt}\bullet\,对于密码中的数字,保持不变。

\hspace{15pt}现在,请你将给定的密码按照上述规则进行变换。

输入描述:
\hspace{15pt}在一行上输入一个长度为 1 \leqq {\rm length}(s) \leqq 100 的字符串 s ,代表给定的密码。


输出描述:
\hspace{15pt}在一行上输出一个字符串,代表变换后的密码。
示例1

输入

NowCoder123

输出

o69d6337123
此题难点在于大写字母的转换逻辑 对于Z单独判断return a 其他可直接使用ascii增1 的方式实现  小写转换的话 找到对应key值对应的value即可 
以下是代码 
import sys

map_data = {
    "abc": 2,
    "def": 3,
    "ghi": 4,
    "jkl": 5,
    "mno": 6,
    "pqrs": 7,
    "tuv": 8,
    "wxyz": 9,
}


def convert_str(str_a):
    # 大写
    if str_a.isupper():
        # 大写转换逻辑
        # 先转换为小写
        str_a = str_a.lower()
        if str_a == "z":
            return "a"
        else:
            return chr(ord(str_a) + 1)
    # 小写
    if str_a.islower():
        # 小写转换逻辑
        for key, value in map_data.items():
            if str_a in key:
                # 找到value
                return value
    if str_a.isdigit():
        return str_a


for line in sys.stdin:
    a = line.strip().split()[0]
    for i in a:
        b=convert_str(i)
        print(b,end="")
    


发表于 2025-11-13 16:15:00 回复(0)
import sys

d = {
    "abc":2,
    "edf":3,
    "ghi":4,
    "jkl":5,
    "mno":6,
    "pqrs":7,
    "tuv":8,
    "wxyz":9
}
for line in sys.stdin:
    result = ""
    chars = line.strip()
    for char in chars:
        if char.islower():
            for k in d.keys():
                if char in k:
                    result+=str(d[k])
        elif char.isdigit():
            result += char
        elif char.isupper():
            char = char.lower()
            if char == "z":
                swich = "a"
                result += swich
            else:
                swich= chr(ord(char)+1)
                result+=swich
    print(result)

发表于 2025-10-24 11:03:02 回复(0)
import sys

s = input()
lower_table = str.maketrans("abcdefghijklmnopqrstuvwxyz", "22233344455566677778889999")
upper_table = str.maketrans("ABCDEFGHIJKLMNOPQRSTUVWXYZ", "bcdefghijklmnopqrstuvwxyza")
s = s.translate(lower_table).translate(upper_table)
print(s)

发表于 2025-07-25 15:27:01 回复(0)
a = input()
b = ''
c = ''
alpha = ['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']
for i in range(len(a)):
    if a[i] in alpha[0:3]:
        b += '2'
    elif a[i] in alpha[3:6]:
        b += '3'
    elif a[i] in alpha[6:9]:
        b += '4'
    elif a[i] in alpha[9:12]:
        b += '5'
    elif a[i] in alpha[12:15]:
        b += '6'
    elif a[i] in alpha[15:19]:
        b += '7'
    elif a[i] in alpha[19:22]:
        b += '8'
    elif a[i] in alpha[22:]:
        b += '9'
    elif a[i].isupper():
        c = a[i].lower()
        if c == 'z':   # 取z的特殊情况不要忘记
            b += 'a'
        else:
            for k in range(len(alpha)):
                if alpha[k] == c:
                    b += alpha[k+1]
    else:
        b += a[i]
print(b)        
发表于 2025-07-11 23:12:22 回复(0)
秒杀 不使用if的写法:
d = {'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', '1':'1', '2':'2', '3':'3', '4':'4', '5':'5', '6':'6', '7':'7', '8':'8', '9':'9', '0':'0'}
pw = input()
for i in pw:
    print(d[i], end='')


发表于 2025-04-03 21:26:55 回复(1)

用ASCII码来实现

def transletter(a): # 对参数 字符进行转换
    asc_a = ord(a)
    if asc_a == 97 or asc_a == 98 or asc_a == 99:
        new_asc = 50
    elif asc_a == 100 or asc_a == 101 or asc_a == 102:
        new_asc = 51
    elif asc_a == 103 or asc_a == 104 or asc_a == 105:
        new_asc = 52
    elif asc_a == 106 or asc_a == 107 or asc_a == 108:
        new_asc = 53
    elif asc_a == 109 or asc_a == 110 or asc_a == 111:
        new_asc = 54
    elif asc_a == 112 or asc_a == 113 or asc_a == 114 or asc_a == 115:
        new_asc = 55
    elif asc_a == 116 or asc_a == 117 or asc_a == 118:
        new_asc = 56
    elif asc_a == 119 or asc_a == 120 or asc_a == 121 or asc_a == 122:
        new_asc = 57
    elif asc_a >= 65 and asc_a <= 89:
        new_asc = asc_a + 33
    elif asc_a == 90:
        new_asc = 97
    else:
        new_asc = asc_a
    return new_asc

s = input()
s_lst = list(s)
asc_lst = [] # 存储密码的ASCII码值
for item in s_lst:
    asc_le = transletter(item)
    temp = asc_le
    asc_lst.append(temp)
password = []
for item in asc_lst:
    pass_letter = chr(item)
    temp = pass_letter
    password.append(temp)
pss = ''.join(password)
print(pss)
发表于 2025-03-30 20:57:45 回复(0)
import re
dict_ = {
    "abc": 2,
    "def": 3,
    "ghi": 4,
    "jkl": 5,
    "mno": 6,
    "pqrs": 7,
    "tuv": 8,
    "wxyz": 9,
}
dict_2 = {j:str(dict_[key]) for key in dict_.keys()  for j in list(key)}

pwd = input()
val_list = list(dict_2.keys())
pwd_trans=[]
for i in list(pwd):
    if i.islower()==True:
        pwd_trans.append(dict_2[i])
    elif i.isupper()==True:
        i_trans=i.lower()
        if i=='Z':
            pwd_trans.append('a')
        else:
            pwd_trans.append(val_list[val_list.index(i_trans)+1])
    elif len(re.findall('[0-9]',i))>0:
        pwd_trans.append(i)

print(''.join(pwd_trans))

发表于 2025-03-12 22:15:32 回复(0)
import sys

def switchpassword(password):
    keypad = {
        'abc': '2', 'def': '3', 'ghi': '4', 'jkl': '5', 'mno': '6',
        'pqrs': '7', 'tuv': '8', 'wxyz': '9'
    }
    result = []
    for i in password:
        if i.isdigit():
            result.append(i)
        elif i.islower():
            for key in keypad:
                if i in key:
                    result.append(keypad[key])
        elif i.isupper():  # 大写字母转换规则
            if i.lower() == 'z':
                result.append('a')
            else:
                new_char = chr(ord(i.lower()) + 1)
                result.append(new_char)
        else:  # 其他字符不需要处理
            result.append(i)
   
    return ''.join(result)

for line in sys.stdin:
    a = line.strip()
    print(switchpassword(a))
发表于 2025-03-04 14:45:12 回复(0)
a = input()
aa = str.maketrans    ("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ",
 "22233344455566677778889999bcdefghijklmnopqrstuvwxyza",)
a = a.translate(aa);print(a)
咱用Python3的真是太省头发了!
发表于 2025-02-18 10:07:41 回复(1)
优雅,小琴
发表于 2025-01-16 08:53:39 回复(0)
A={'1':1,
   'abc':2,
   'def':3,
   'ghi':4,
   'jkl':5,
   'mno':6,
   'pqrs':7,
   'tuv':8,
   'wxyz':9,
   '0':0,
   }
B=input()
C=[]
for i in B:             ####遍历输入的字符串
   if i.isdigit():         #####判断字符是否为数字,如果是,直接列表
      C.append(i)
#####判断字符是否为不为Z的大写字母,如果是,直接变为小写并后移一位,加入列表
   elif i.isupper() and i not in 'Z':
      C.append(chr(ord(i)+1).lower())
#####判断字符是否为不小写字母,如果是,将对应的键对应的值加入列表
   elif i.islower():
      for yuansu_key in A.keys():
         if i in yuansu_key:
            C.append(str(A[yuansu_key]))
#####判断字符是否为Z,如果是,加入列表
   elif i in 'Z':
      C.append('a')
#####其他字符,直接加入列表
   else:
      C.qppend(i)
####将序列以空格为连接符拼接成字符串输出
print(''.join(C))

发表于 2024-12-05 19:07:09 回复(0)
strr = input()
def Zi_to_Num(strr):
    if strr == '1':
        return '1'
    if strr == '0':
        return '0'
    if strr.isupper():
        if ord(strr) < 90:
            return chr(ord(strr.lower())+1)
        if ord(strr) == 90:
            return 'a'
    if strr.islower():
        if strr in 'abc':
            return '2'
        if strr in 'def':
            return '3'
        if strr in 'ghi':
            return '4'
        if strr in 'jkl':
            return '5'
        if strr in 'mno':
            return '6'
        if strr in 'pqrs':
            return '7'
        if strr in 'tuv':
            return '8'
        if strr in 'wxyz':
            return '9'
    if strr.isdigit():
        return strr
out = ''
for i in strr:
    out += Zi_to_Num(i)
print(out)
发表于 2024-11-24 23:40:23 回复(1)
    source=input()
    button=['1','abc','def','ghi','jkl','mno','pqrs','tuv','wxyz','0']
    out=['1','2','3','4','5','6','7','8','9','0']
    res=[]
    for i in source:
        if i.isdigit():
            res.append(i)
        elif i.isupper():
            if i=='Z':
                res.append('a')
            else:
                res.append(chr(ord(i.lower())+1))
        elif i.islower():
            for j in button:
                if i in j:
                    res.append(out[button.index(j)])
                    break
        else:
            res.append(i)
    print(''.join(res))
发表于 2024-11-21 17:38:44 回复(0)
import sys

alpha_dict = {
    "abc": "2",
    "def": "3",
    "ghi": "4",
    "jkl": "5",
    "mno": "6",
    "pqrs": "7",
    "tuv": "8",
    "wxyz": "9"
}

for line in sys.stdin:
    m = ''
    for s in line:
        if s.isalpha():
            if s.islower():
                for a in alpha_dict:
                    if s in a:
                        s = alpha_dict[a]
                        break
            else:
                s = "a" if s == "Z" else chr(ord(s.lower()) + 1)
        m += s
    print(m)

发表于 2024-11-12 16:58:07 回复(0)
password = input() transformed_password = "" for char in password: if char.islower(): if char in 'abc': transformed_password += '2' elif char in 'def': transformed_password += '3' elif char in 'ghi': transformed_password += '4' elif char in 'jkl': transformed_password += '5' elif char in'mno': transformed_password += '6' elif char in 'pqrs': transformed_password += '7' elif char in 'tuv': transformed_password += '8' elif char in 'wxyz': transformed_password += '9' elif char.isupper(): lower_char = char.lower() if lower_char == 'z': transformed_password += 'a' else: transformed_password += chr(ord(lower_char) + 1) else: transformed_password += char print(transformed_password)
发表于 2024-10-31 14:37:30 回复(0)
in_str = input()

trs = {
    "1":"1",
    "abc":"2",
    "def":3,
    "ghi":4,
    "jkl":5,
    "mno":6,
    "pqrs":7,
    "tuv":8,
    "wxyz":9,
    "0":0
}
uper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
o = ""
ns = list(in_str)
for i,j in trs.items():
    for k in range(len(ns)):
        if ns[k] in i:
            ns[k] = str(j)

for i in range(len(in_str)):
    if in_str[i].isupper():
        up_index = uper.index(in_str[i])
        if up_index != 25:
            ns[i] = uper[up_index+1].lower()
        else:
            ns[i] = 'a'
print("".join(map(str,ns)))

发表于 2024-09-30 07:19:32 回复(0)
import sys


for line in sys.stdin:
    password = ""
    for i in line:
        if i == '1':
            print(i, end="")
        else:
            if i.isalpha():
                if i.islower():
                    if i not in ['s', 'v', 'y', 'z']:
                        print((ord(i) - ord('a')) // 3 + 2, end="")
                    else:
                        print((ord(i) - ord('a')) // 3 + 1, end="")
                else:
                    c = chr(ord(i)+1).lower()
                    if c.isalpha():
                        print(c, end="")
                    else:
                        print("a", end="")
            else:
                print(i, end="")

发表于 2024-09-24 07:51:46 回复(0)
A="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
B="22233344455566677778889999bcdefghijklmnopqrstuvwxyza"
a=input()
b=''
for i in a:
    if i in A:
        b +=B[A.index(i)]
    else:
        b +=i
print(b)  
发表于 2024-09-07 15:39:55 回复(2)