实现凯撒密码加密

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何实现凯撒密码(Caesar Cipher),这是一种简单且广为人知的加密技术。凯撒密码使用替换方法,将消息中的英文字母替换为字母表序列中向后或向前 N 个位置的字符。

👀 预览

## 示例 1
text = "python"; encryption_text = "ravjqp"
## 示例 2
text = "pyThon"; encryption_text = "raVjqp"
## 示例 3
text = "Python31"; encryption_text = "Ravjqp31"
## 示例 4
text = None; encryption_text = None

🎯 任务

在这个项目中,你将学习:

  • 如何设置项目环境并创建必要的文件
  • 如何实现凯撒加密函数,将字符串中的每个英文字母向右移动 2 个位置
  • 如何处理不同类型的输入,包括英文字母、非英文字母和空值
  • 如何使用各种输入示例测试凯撒加密函数

🏆 成果

完成这个项目后,你将能够:

  • 理解凯撒密码加密技术的基本原理
  • 在不使用任何标准或第三方库的情况下,用 Python 实现凯撒加密函数
  • 培养字符串操作、字符编码和条件逻辑方面的技能
  • 测试你的代码,确保它符合项目要求

实现凯撒加密

在这一步中,你将实现凯撒加密函数。

  1. 打开 caesar_cipher.py 文件。

  2. 修改 caesar_encryption(text) 函数以实现所需功能:

    • 输入一个字符串,并将字符串中的每个英文字符向右移动 2 个位置。
    • 仅转换半角英文字符,其他内容保持不变。
    • 字符的大小写应保持不变,例如,A 将转换为 C,b 将转换为 d。
  3. """TODO""" 注释替换为以下代码:

def caesar_encryption(text: str) -> str:
    if text is None:
        return None
    encryption_text = ""
    for char in text:
        if char.isalpha() and char.isascii():
            if char.islower():
                encryption_text += chr((ord(char) - ord("a") + 2) % 26 + ord("a"))
            else:
                encryption_text += chr((ord(char) - ord("A") + 2) % 26 + ord("A"))
        else:
            encryption_text += char
    return encryption_text

这段代码实现了项目要求中描述的凯撒加密算法。

✨ 查看解决方案并练习

测试凯撒加密

在这一步中,你将使用一些示例输入来测试凯撒加密函数。

  1. caesar_cipher.py 文件末尾添加以下代码:
if __name__ == "__main__":
    test_input_text = input()
    print(caesar_encryption(test_input_text))
  1. 保存 caesar_cipher.py 文件。
  2. 打开一个终端并导航到 /home/labex/project 目录。
  3. 使用以下命令运行 caesar_cipher.py 脚本:
python3 caesar_cipher.py
  1. 输入一些测试输入文本并观察加密后的输出。
✨ 查看解决方案并练习

验证要求

在这一步中,你将验证你的实现是否符合项目要求。

  1. 回顾项目要求,确保你的 caesar_encryption(text) 函数:

    • 输入一个字符串,并将字符串中的每个英文字符向右移动 2 个位置。
    • 仅转换半角英文字符,其他内容保持不变。
    • 保留字符的大小写,例如,A 转换为 C,b 转换为 d。
  2. 使用提供的参考示例测试你的函数:

## 示例 1
text = "python"; encryption_text = "ravjqp"
## 示例 2
text = "pyThon"; encryption_text = "raVjqp"
## 示例 3
text = "Python31"; encryption_text = "Ravjqp31"
## 示例 4
text = None; encryption_text = None
  1. 确保你的函数能正确处理所有测试用例。

恭喜你!你已经完成了凯撒密码项目。如果你有任何问题或需要进一步的帮助,请随时提问。

✨ 查看解决方案并练习

总结

恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。