以凯撒加密为原理写出一下包含一下要求的代码 要求: 从键盘输入待加密字串,及k值 大写字母、小写字母、数字均进行映射转换: 小写字母与逆序大写字母互换进行映射,如a--Z,b--Y,c--X ... ... , z--A 数字与其后面的第k位进行映射,如当k=2时,映射对应关系为0123456789--2345678901
时间: 2024-02-29 09:51:23 浏览: 31
以下是基于凯撒加密原理的代码,可以实现大写字母、小写字母和数字的加密:
```python
def caesar_cipher(text, k):
"""
凯撒加密函数,实现对文本的加密
:param text: str 待加密的文本
:param k: int 移位的数量
:return: str 加密后的文本
"""
# 定义字母表
letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
# 定义数字表
numbers = "0123456789"
# 加密后的结果
result = ""
# 遍历待加密的文本
for char in text:
# 如果是大写字母
if char.isupper():
# 计算加密后的位置
pos = (letters.index(char) + k) % 26
# 获取加密后的字符
encrypted_char = letters[pos].upper()
# 将加密后的字符添加到结果中
result += encrypted_char
# 如果是小写字母
elif char.islower():
# 计算加密后的位置
pos = (letters.index(char.upper()) + k) % 26
# 获取加密后的字符
encrypted_char = letters[pos].lower()
# 将加密后的字符添加到结果中
result += encrypted_char
# 如果是数字
elif char.isdigit():
# 计算加密后的位置
pos = (numbers.index(char) + k) % 10
# 获取加密后的字符
encrypted_char = numbers[pos]
# 将加密后的字符添加到结果中
result += encrypted_char
# 如果是其他字符,直接添加到结果中
else:
result += char
return result
# 测试代码
text = input("请输入待加密的文本:")
k = int(input("请输入移位的数量:"))
encrypted_text = caesar_cipher(text, k)
print("加密后的文本为:", encrypted_text)
```
例如,当输入待加密文本为 "Hello, World! 123",移位数量为 3 时,加密后的文本为 "Khoor, Zruog! 456"。其中,字母 H 被加密为 K,字母 W 被加密为 Z,数字 1 被加密为 4。而逗号、空格和感叹号等非字母数字字符则保持不变。