研究上面的代码,掌握string库、maketrans() 函数、translate()函数的用法后,编写一个程序实现凯撒加密:输入一个字符串,对字符串中的字母和数字进行加密(规定加密偏移量为3,即后移三位),并输出加密后的字符串。
时间: 2023-08-31 18:40:19 浏览: 140
Python2.x和3.x下maketrans与translate函数使用上的不同
### 回答1:
以下是实现凯撒加密的Python代码:
```python
import string
# 构建映射表
shift = 3
lowercase = string.ascii_lowercase
uppercase = string.ascii_uppercase
digits = string.digits
trans_table = str.maketrans(lowercase + uppercase + digits,
lowercase[shift:] + lowercase[:shift] +
uppercase[shift:] + uppercase[:shift] +
digits[shift:] + digits[:shift])
# 加密函数
def caesar_cipher(text):
return text.translate(trans_table)
# 测试
text = "Hello, World! 123"
encrypted_text = caesar_cipher(text)
print(encrypted_text)
```
输出结果为:
```
Khoor, Zruog! 456
```
代码中,我们首先使用 `string` 模块获取了小写字母、大写字母和数字,然后使用 `maketrans()` 函数构建了一个映射表 `trans_table`,将每个字符映射到其加密后的字符。
然后我们定义了一个 `caesar_cipher()` 函数,它接收一个字符串作为参数,并返回加密后的字符串。在函数内部,我们调用了字符串的 `translate()` 方法,该方法根据映射表 `trans_table` 将字符串中的字符进行加密。
最后,我们对字符串 "Hello, World! 123" 进行加密,并输出加密后的结果。
### 回答2:
以下是使用Python编写的凯撒加密程序:
```python
def caesar_encrypt(string):
shift = 3 # 加密偏移量为3
alphabet = "abcdefghijklmnopqrstuvwxyz"
digits = "0123456789"
# 构建加密字典
trans_dict = {}
for char in alphabet:
trans_dict[char] = alphabet[(alphabet.index(char) + shift) % len(alphabet)]
for digit in digits:
trans_dict[digit] = digits[(digits.index(digit) + shift) % len(digits)]
# 进行加密
encrypted_string = string.translate(str.maketrans(trans_dict))
return encrypted_string
# 测试示例
input_string = input("请输入要加密的字符串:")
encrypted_string = caesar_encrypt(input_string)
print("加密后的字符串为:", encrypted_string)
```
使用以上代码,我们首先定义了一个 `caesar_encrypt` 函数,它接收一个字符串作为输入,在函数中我们定义了加密偏移量 `shift` 为3,字母表 `alphabet` 为小写字母表,数字表 `digits` 为数字0到9。
接下来,我们构建了一个加密字典 `trans_dict`,用于记录每个字符加密后对应的字符。首先,我们遍历字母表,对于每个字母,我们通过 `alphabet.index(char)` 获取其在字母表中的索引位置,然后将加密后的字母根据 `(索引 + shift) % len(alphabet)` 的结果来确定。同样的,我们也遍历了数字表,并构建了数字的加密映射关系。
最后,我们使用内置函数 `str.maketrans` 来生成转换表,并使用 `translate` 函数将输入字符串按照转换表进行加密。最后,我们将加密后的字符串输出给用户。
希望以上回答能够帮助你理解并编写凯撒加密的程序。
阅读全文