项目场景:

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


问题描述:

提示:这里描述项目中遇到的问题:

在这里插入图片描述


原因分析:

首先题目要求一次输出两个数据,其中第一个数据表示移动的位数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码转为字符

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

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐