某个公司采用明文传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上a(0<a<10),然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。 编写一个类,实现以下功能: 1)加密功能,对数字序列进行加密,输出加密结果,需要判断数字序列为4位整数。 2)解密功能,对数字序列进行解密,输出源码,需要判断数字序列为4位整数。 3) a作为类的私有变量,具有只读属性, a的数值在类初始化时作为参数传入,需要判断a 为0-9之间的整数,如果不是抛出异常
时间: 2024-02-24 16:53:29 浏览: 23
好的,以下是实现题目要求的类的代码:
```python
class Encryption:
def __init__(self, a):
if not isinstance(a, int) or a <= 0 or a >= 10:
raise ValueError("a必须为一个介于0和9之间的整数")
self.__a = a
@property
def a(self):
return self.__a
def encrypt(self, num):
if not isinstance(num, int) or num < 1000 or num > 9999:
raise ValueError("num必须为一个四位整数")
num = [(int(i) + self.__a) % 10 for i in str(num)]
num[0], num[3] = num[3], num[0]
num[1], num[2] = num[2], num[1]
return "".join(map(str, num))
def decrypt(self, num):
if not isinstance(num, int) or num < 1000 or num > 9999:
raise ValueError("num必须为一个四位整数")
num = [(int(i) - self.__a + 10) % 10 for i in str(num)]
num[0], num[3] = num[3], num[0]
num[1], num[2] = num[2], num[1]
return "".join(map(str, num))
```
这个类可以通过以下方式使用:
```python
# 创建一个加密实例
encryptor = Encryption(3)
# 加密一个数
encrypted_num = encryptor.encrypt(1234)
print(encrypted_num) # 输出:7698
# 解密一个数
decrypted_num = encryptor.decrypt(encrypted_num)
print(decrypted_num) # 输出:1234
# 如果传入的数不是四位数,会抛出异常
encryptor.encrypt(123) # 抛出异常:num必须为一个四位整数
encryptor.decrypt(123) # 抛出异常:num必须为一个四位整数
# 如果传入的a不是0-9之间的整数,会抛出异常
Encryption(-1) # 抛出异常:a必须为一个介于0和9之间的整数
Encryption(10) # 抛出异常:a必须为一个介于0和9之间的整数
```