改进上面代码
时间: 2023-07-03 09:25:41 浏览: 47
可以对上面的维吉尼亚密码加密代码进行一些改进,使其更加健壮和通用。以下是改进的代码:
```python
def vigenere_cipher(text, key):
# 将明文和密钥转换为大写字母
text = text.upper()
key = key.upper()
# 检查密钥是否合法
if not key.isalpha():
raise ValueError("密钥只能包含字母")
# 初始化密文和密钥索引
cipher = ""
key_index = 0
# 遍历明文中的每个字符
for char in text:
if char.isalpha():
# 计算字符的偏移量
offset = ord(key[key_index]) - ord('A')
key_index = (key_index + 1) % len(key)
# 加密字符
if char.isupper():
cipher += chr((ord(char) - ord('A') + offset) % 26 + ord('A'))
else:
cipher += chr((ord(char) - ord('a') + offset) % 26 + ord('a'))
else:
# 不加密非字母字符
cipher += char
return cipher
```
改进后的代码增加了对密钥的合法性检查,只允许密钥包含字母。如果密钥不合法,将会抛出一个 `ValueError` 异常。这样可以避免在加密过程中发生错误。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![js](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)