首页 > 试题广场 >

简单密码

[编程题]简单密码
  • 热度指数:312011 时间限制: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
秒杀 不使用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 回复(0)

用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)
def Password_conversion(s):
    new_word = ''
    for i in s:
        if i in "abc":
            new_word += '2'
        elif i in "def":
            new_word += '3'
        elif i in "ghi":
            new_word += '4'
        elif i in "jkl":
            new_word += '5'
        elif i in "mno":
            new_word += '6'
        elif i in "pqrs":
            new_word += '7'
        elif i in "tuv":
            new_word += '8'
        elif i in "wxyz":
            new_word += '9'

        elif i.isupper():
            if i == "Z":
                new_word += 'a'
            else:
                new_word += chr(ord(i.lower())+1)
        else:
            new_word += i
    return new_word

print(Password_conversion(input()))

发表于 2024-08-14 18:18:04 回复(0)
while True:
    try:
        s = input()
        d = dict(zip('1abcdefghijklmnopqrstuvwxyz0', '1222333444555666777788899990'))
        res = ''
        for ch in s:
            if ch.islower():
                res += d[ch]
            elif ch.isupper():
                if ch != 'Z':
                    res += chr(ord(ch)+1).lower()
                else:
                    res += 'a'
            elif ch.isdigit():
                res += ch
        print(res)
    except:
        break

发表于 2024-08-11 12:38:26 回复(0)
# 第21题 密码转换
a_input = list(input())
str_2 = 'abc'
str_3 = 'def'
str_4 = 'ghi'
str_5 = 'jkl'
str_6 = 'mno'
str_7 = 'pqrs'
str_8 = 'tuv'
str_9 = 'wxyz'
n = -1
for i in a_input:
    n += 1
    if i in str_2 :
        a_input[n] = '2'
    if i in str_3 :
        a_input[n] = '3'
    if i in str_4:
        a_input[n] = '4'
    if i in str_5 :
        a_input[n] = '5'
    if i in str_6 :
        a_input[n] = '6'
    if i in str_7 :
        a_input[n] = '7'
    if i in str_8 :
        a_input[n] = '8'
    if i in str_9 :
        a_input[n] = '9'
    if i.isupper() and i != 'Z':
        sc_value = ord(i) + 1
        b = chr(sc_value)
        c = b.lower()
        a_input[n] = c
    if i == 'Z':
        a_input[n] = 'a'
a_str = ''
for item in a_input:
    a_str += item
print(a_str)
发表于 2024-06-07 22:25:33 回复(0)