首页 > 编程语言 >记一次解‘字符串加解密’算法

记一次解‘字符串加解密’算法

时间:2023-05-12 18:11:06浏览次数:40  
标签:小写字母 加解密 else l6 算法 l5 输入 字符串 append

题目:

对输入的字符串进行加解密,并输出。
加密方法为:
当内容是英文字母时则用该英文字母的后一个字母替换,同时字母变换大小写,如字母a时则替换为B;字母Z时则替换为a;
当内容是数字时则把该数字加1,如0替换1,1替换2,9替换0;其他字符不做变化。
解密方法为加密的逆过程。
数据范围:输入的两个字符串长度满足1≤n≤1000  ,保证输入的字符串都是只由大小写字母或者数字组成

输入描述:
第一行输入一串要加密的密码
第二行输入一串加过密的密码

输出描述:
第一行输出加密后的字符
第二行输出解密后的字符

输入:abcdefg
     BCDEFGH

输出:BCDEFGH
     abcdefg

思路导图

 

代码:

n5 = input()
n6 = input()
l5 = []
l6 = []
for i in n5:  # 加密
    if i.isalpha():  # 字母
        if i.islower():  # 小写字母
            if i == 'z':
                l5.append('A')
            else:  # 其它小写字母
                p = i.upper()
                q = ord(p) + 1
                l5.append(chr(q))
        elif i.isupper():  # 大写字母
            if i == 'Z':
                l5.append('a')
            else:  # 其它大写字母
                x = i.lower()
                y = ord(x) + 1
                l5.append(chr(y))
    elif i.isdigit():  # 数字
        if int(i) == 9:
            l5.append(0)
        else:  # 除9之外的其它数
            l5.append(int(i) + 1)
    else:  # 其它
        l5.append(i)


for i in n6:  # 解密
    if i.isalpha():  # 字母
        if i.islower():  # 小写字母
            if i == 'a':
                l6.append('Z')
            else:
                u = i.upper()
                v = ord(u) - 1
                l6.append(chr(v))
        elif i.isupper():  # 大写字母
            if i == 'A':
                l6.append('z')
            else:
                g = i.lower()
                h = ord(g) - 1
                l6.append(chr(h))
    elif i.isdigit():  # 数字
        if int(i) == 0:
            l6.append(9)
        else:  # 除0之外的其它数
            l6.append(int(i)-1)
    else:  # 其它
        l6.append(i)

for d in l5:
    print(d, end='',)
print()
for e in l6:
    print(e, end='')

 

 

 

 

 

 

 

 

 

 

 

 

标签:小写字母,加解密,else,l6,算法,l5,输入,字符串,append
From: https://www.cnblogs.com/zy7941246/p/17395989.html

相关文章

  • sql server 将datetime类型的字段转化成字符串输出
    SELECTOBJID,NAME,CONVERT(varchar(19),CREATIONDATE,120)ASCREATIONDATEFROM[dbo].[SYS_DOCUMENTREV]WHERENAMELIKE'test%.pdf'ORDERBYCREATIONDATEDESC......
  • bat中传递JSON参数时,由于JSON包含一些特殊字符如引号、反斜杠等,需要对JSON字符串进行
    在bat中传递JSON参数时,由于JSON包含一些特殊字符如引号、反斜杠等,这些字符可能会导致命令行解释器解析出错。为了避免这些问题,通常建议对JSON字符串进行一些转义处理。具体转义规则如下:对每个双引号(")进行转义,变成"。对每个反斜杠(\)进行转义,变成\。当你传递一个JSON字符串......
  • 在C#中使用默认值初始化字符串数组的3种方式
    在本文中,您将学习到新建字符串数组如何设置默认值。数组是可以使用索引访问的相同类型的元素的集合。对于字符串数组,每个元素都是一个字符串值。在C#中创建新的字符串数组时,默认值为null。但是,在某些情况下,您可能希望使用特定的默认值而不是null初始化字符串数组。例如,希望A......
  • 单片机ADC,十大C语言滤波算法
    一、限幅滤波法1、方法:根据经验判断两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: a.如果本次值与上次值之差<=A,则本次值有效b.如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值2、优点:能有效克服因偶然因素引起的脉冲干扰3、缺点......
  • hash哈希算法
    hash,-般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间。它其实就是一个算法,最简单的算法就是加减乘除,比方,我设计个数字算法,输入+......
  • 无感FOC 基于DSP28335平台的无感FOC算法 代码包括了完整的矢量控
    无感FOC基于DSP28335平台的无感FOC算法代码包括了完整的矢量控制算法,在smo的基础上,增加了VESC原始的磁链观测器,还增加了磁链观测器+PLL方案,还增加了增量编码器的接口代码,方便大家调试无感算法。每个环节都是在实物上跑过的,转子位置角度通过全局变量设置进行任意的切换,算法之间相互......
  • 四种语言刷算法之排序链表
    力扣148. 排序链表1、C/***Definitionforsingly-linkedlist.*structListNode{*intval;*structListNode*next;*};*/structListNode*sortList(structListNode*head){intn=0;structListNode*newHead=(structListNode*)m......
  • 模板元编程实战--类型列表算法
    这篇文章主要说明了我学习的过程,作为一种记事本来记录,它讲述了如何处理一个类型列表的拼接,查找,排序,等算法。数据结构:template<typename...Ts>structTypeList{structisTypeList{};usingtype=TypeList<Ts...>;constexprstaticsize_tsize=sizeof...(......
  • 无刷直流电机有感方波 有感方波控制算法,包括电机相序确定方法,霍尔安装
    无刷直流电机有感方波有感方波控制算法,包括电机相序确定方法,霍尔安装位置确定方法,不同斩波方式(两两导通、33导通不一样)编写方法,霍尔换相表确定,霍尔自学习,各种启动方式的差异,带载堵转力矩保持,电流保护策略,前馈策略,带载降低超调的策略,等等。可以提供基础仿真模型,学习代码,一些文档......
  • 2022-01-30:最小好进制。 对于给定的整数 n, 如果n的k(k>=2)进制数的所有数位全为1,则称 k(k
    2022-01-30:最小好进制。对于给定的整数n,如果n的k(k>=2)进制数的所有数位全为1,则称k(k>=2)是n的一个好进制。以字符串的形式给出n,以字符串的形式返回n的最小好进制。输入:“4681”输出:“8”解释:4681的8进制是11111。提示:n的取值范围是[3,10^18]。输入总是有效且......