凯撒密码实现:如何将输入字符匹配字母列表并完成移位
凯撒密码实现方案
核心实现思路
借助alphabet列表的索引定位+取模运算处理字符移位,解决越界问题,具体步骤如下:
- 获取待加密文本与移位量
- 初始化空字符串存储加密结果
- 遍历输入文本的每个字符,分情况处理:
- 字符在
alphabet内:找到原索引,计算新索引(原索引+移位量)对26取模,再从列表中取出对应加密字符 - 非字母字符(空格、标点等)直接保留
- 字符在
完整代码示例
# 定义完整小写字母列表 alphabet = ['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'] # 获取用户输入 text = input('Enter your message: ') shift = int(input('Enter shift amount: ')) # 初始化加密结果容器 encrypted_text = '' # 逐个处理字符 for char in text: if char in alphabet: # 获取原字符在列表中的索引 original_idx = alphabet.index(char) # 计算移位后的新索引,取模26防止越界 new_idx = (original_idx + shift) % 26 # 取出加密字符并追加到结果 encrypted_text += alphabet[new_idx] else: # 非字母字符直接保留 encrypted_text += char print('Encrypted message:', encrypted_text)
关键细节说明
- 取模运算:当移位量超过26时(比如移位30),
(original_idx + 30) % 26等价于移位4,确保索引始终在0-25的有效范围内,避免列表越界报错。 - 大小写兼容:如果需要支持大写字母,可以额外定义大写字母列表,或者先将字符转小写处理后再转回大写(根据需求调整逻辑)。
- 异常规避:先判断
char in alphabet,避免输入非字母字符时index()方法抛出查找失败的异常。
内容的提问来源于stack exchange,提问作者Soham Karalkar
相关产品推荐
相关产品推荐

