提示:这里简述项目相关背景:
实验课练习题目
问题描述:
提示:这里描述项目中遇到的问题:
原因分析:
首先题目要求一次输出两个数据,其中第一个数据表示移动的位数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) print(ret)
知识点:
(1) split(参数1,参数2) 一般第一个参数是分隔符,第二个参数是分割多项项,若不指定,分割一次。 (2)ord(): ord(“字符串“) 返回值为字符对应的acsII码 (3)chr() : 将对应的acsII码转为字符
运行结果: