Python 写 凯撒密码 第三周第四个代码

本文介绍了一种简单的凯撒加密算法实现方法,并通过Python代码详细解释了如何对字母进行移位加密的过程。针对英文大小写字母,利用ord()和chr()函数实现了字符的Unicode编码转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先奉上题目

测试的结果:

代码如下:

s = input()
t = ""
for c in s:
    if 'A'<= c <= 'Z':
        t += chr(ord('A') + (ord(c)-ord('A')+3)%26)
    elif 'a'<= c <= 'z':
        t += chr(ord('a') + (ord(c)-ord('a')+3)%26)
    else:
        t += c
print(t)

关键在于使用 ord() 与 chr() 函数

ord() 函数是将字符转为 Unicode 代码,通常为 10 进制

chr() 函数是将 Unicode 代码转换为字符,接受 10 进制、16进制(0xff)输入

由于凯撒密码要求往前挪3个排序作为加密后的字符,而考虑到XYZ,这3个字符如果仅仅往前挪,就会出现

{
|
}

这3个字符。所以题目中已经给了提示要在基础上 +3 再 mod26 ,就是对26个英文字母取余,然后添加到 a 的字符上。

结果如下:

完美!

### 关于凯撒密码Python 实现 #### 什么是凯撒密码凯撒密码是一种古老的加密技术,其基本原理是对消息中的每个字母按照固定的偏移量进行替换。通常情况下,这种偏移是在英文字母表中完成的。例如,如果偏移量为3,则“A”会被替换成“D”,依此类推[^1]。 #### 加密与解密逻辑 在凯撒密码中,加密和解密的过程可以简单描述为以下两个公式: - **加密公式**: \(f(a) = (a + n) \mod 26\) - **解密公式**: \(f(a) = (a + 26 - n) \mod 26\) 这里\(n\)表示偏移量[^3]。 #### 使用标准库实现凯撒密码 下面是一个基于`string`模块的标准库实现方式: ```python import string def caesar_cipher_encrypt(text, shift): result = [] for char in text: if char.isupper(): index = (string.ascii_uppercase.index(char) + shift) % 26 result.append(string.ascii_uppercase[index]) elif char.islower(): index = (string.ascii_lowercase.index(char) + shift) % 26 result.append(string.ascii_lowercase[index]) else: result.append(char) return &#39;&#39;.join(result) def caesar_cipher_decrypt(ciphertext, shift): return caesar_cipher_encrypt(ciphertext, -shift) plaintext = "HELLO" shift = 3 encrypted_text = caesar_cipher_encrypt(plaintext, shift) print(f"Encrypted Text: {encrypted_text}") # 输出 KHOOR decrypted_text = caesar_cipher_decrypt(encrypted_text, shift) print(f"Decrypted Text: {decrypted_text}") # 输出 HELLO ``` 此代码片段展示了如何利用Python内置的字符串处理能力来实现简单的凯撒加密/解密功能[^4]。 #### 增强版实现——支持更多字符集并集成剪贴板交互 为了使程序更加实用,还可以引入第三方库 `pyperclip` 来增强用户体验。以下是扩展版本的例子: ```python import pyperclip import string OFFSET = 13 CHAR_SET = &#39;&#39;.join([chr(i) for i in range(32, 127)]) def enhanced_caesar(s, offset=OFFSET, mode=&#39;encrypt&#39;): before = CHAR_SET after = CHAR_SET[offset:] + CHAR_SET[:offset] if mode == &#39;encrypt&#39; else CHAR_SET[-offset:] + CHAR_SET[:-offset] table = str.maketrans(before, after) return s.translate(table) if __name__ == "__main__": user_input = input("Enter your message:") encrypted_message = enhanced_caesar(user_input, mode=&#39;encrypt&#39;) decrypted_message = enhanced_caesar(encrypted_message, mode=&#39;decrypt&#39;) print(f"\nOriginal Message:\t{user_input}") print(f"Encrypted Message:\t{encrypted_message}") print(f"Decrypted Message:\t{decrypted_message}") pyperclip.copy(encrypted_message) print("\nThe Encrypted Message has been copied to clipboard.") ``` 这段脚本不仅能够处理更广泛的ASCII范围内的字符,还自动将加密后的文本复制到用户的剪贴板以便进一步使用[^2]。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值