Python代码之简单密码(牛客网练习题目)

本文详细介绍了牛客网提出的一种简易密码加密算法,该算法通过将小写字母替换为对应数字,大写字母转化为小写并后移一位来实现加密。文章提供了完整的Python实现代码,展示了如何对给定的字符串进行加密处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

牛客题目描述:

输入明文:YUANzhi1987   输出真正的密文:zvbo9441987

变化规则:

大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变化。密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

主要思路:

两部分:第一部分给定字符串,将字符串中凡是小写字母,先将其变换成上述规则中的数字,其余不变。

第二部分:将第一部分获得的结果,作为第二个部分的输入考虑,我们只需要将大写字母的部分,进行移位,以及移位之后将其变换成小写字母

代码:

#先将字符串中的小写字母变成对应的数字

import sys
s = sys.stdin.readline().strip()
l = []
for i in s:
    l.append(i)
for i in range(len(l)):
    if l[i] in ['a','b','c']:
        l[i] = '2'
    if l[i] in ['d','e','f']:
        l[i] = '3'
    if l[i] in ['g', 'h', 'i']:
        l[i] = '4'
    if l[i] in ['j', 'k', 'l']:
        l[i] = '5'
    if l[i] in ['m', 'n', 'o']:
        l[i] = '6'
    if l[i] in ['p', 'q', 'r', 's']:
        l[i] = '7'
    if l[i] in ['t', 'u', 'v']:
        l[i] = '8'
    if l[i] in ['w', 'x', 'y', 'z']:
        l[i] = '9'
oldstr = ''.join(l)

#将大写字母后移一位,并且变成小写
l2 = []
def hehe(zimu): #移位函数,参考凯撒密码移位两位
    new_str=''
    yiwei = 1
    for i in zimu:
        if i >= 'A' and i <= 'Z':
            i = ord(i)
            i = ((i + yiwei) - 65) % 26 + 65
            i = chr(i)
    new_str += i
    return new_str
for i in range(len(oldstr)):
    if oldstr[i] in ['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']:
        res = hehe(oldstr[i])
        l2.append(res.lower())
    else:
        l2.append(oldstr[i])
new_str = ''.join(l2)
print(new_str)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值