您当前的位置: 首页 >  Python

风间琉璃•

暂无认证

  • 2浏览

    0关注

    337博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

python凯撒加密

风间琉璃• 发布时间:2021-09-29 17:59:29 ,浏览量:2

项目场景:

提示:这里简述项目相关背景: 实验课练习题目

原因分析:

首先题目要求一次输出两个数据,其中第一个数据表示移动的位数n,第二个数据是待加密的原文字符串,所以一次输入多个数据我使用了 input().split()这两个函数,并把这两个数据转为列表的类型,为了后面比较好操作,然后对第二个数据的每一个字母进行遍历,进行加密。

那么,怎么加密呢?凯撒加密的原理:将每个字母转换其往后的第n个字母,这里按照的26个字母顺序。原理很简单,但是怎么将字母转换为其后面的字母,这才是这道题目的重点,我们知道每一个字母对应一个acsii码,将字母转换为ascii码,往后移不就是再ascii码基础上加上位移。但是,要注意,我们知道字母的acsii码是有范围的,如果超出范围将得不到我们想要的数据,所以我们还要对数据进行判断。

解决方案:

提示:这里填写该问题的具体解决方案:

代码如下

str = list(input().split(' ', 1))
tmp = str[1]
ret = ''
for i in tmp:
    if i.isalpha():
        character = ord(i)+int(str[0])  # ord用于从给定字符值中获取数字值  字母加上移位后asc
        if(i.islower() and character > ord('z') or i.isupper() and character > ord('Z')):  # 范围检测
            character -= 26
        ret += chr(character)
    else:
        ret += i
print(ret)



知识点:

​(1) split(参数1,参数2) 一般第一个参数是分隔符,第二个参数是分割多项项,若不指定,分割一次。

​(2)ord():  ord(“字符串“) 返回值为字符对应的acsII码

​(3)chr() : 将对应的acsII码转为字符

运行结果: 在这里插入图片描述

关注
打赏
1665385461
查看更多评论
立即登录/注册

微信扫码登录

0.0388s