关于#python#的问题:某个公司采用公用电话传递数据,在传递过程中是加密的,加密规则如下:每位数字都加上5

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,再将第一位和第四位交换。

def transform(n):
    # 每位数字 + 5,然后对 10 取模
    l1 = (n // 1000 + 5) % 10
    l2 = (n // 100 % 10 + 5) % 10
    l3 = (n // 10 % 10 + 5) % 10
    l4 = (n % 10 + 5) % 10
    
    # 交换第一位和第四位
    temp = l1
    l1 = l4
    l4 = temp
    
    # 拼接数字并返回
    result = l1 * 1000 + l2 * 100 + l3 * 10 + l4
    return result

# 主程序读入整数
n = int(input("请输入一个 4 位整数:"))

# 调用转换函数并输出结果
result = transform(n)
print("转换后的数是:", result)

以下是 Python 代码实现该加密规则:

def encrypt(num):
    # 将数字转换为字符串并分离每一位数字
    digits = [int(d) for d in str(num)]
    # 每位数字加上5
    digits = [(d + 5) % 10 for d in digits]
    # 交换第一位和第四位
    digits[0], digits[3] = digits[3], digits[0]
    # 将加密后的数字转换为整数并返回
    return int(''.join(map(str, digits)))

使用示例:

num = int(input("请输入一个 4 位整数:"))
encrypted_num = encrypt(num)
print(encrypted_num) 

img

解密规则与加密规则相反,即将每位数字减去5,再将第一位和第四位交换。以下是 Python 代码实现该解密规则:

def decrypt(num):
    # 将数字转换为字符串并分离每一位数字
    digits = [int(d) for d in str(num)]
    # 将加密后的数字的第一位和第四位交换
    digits[0], digits[3] = digits[3], digits[0]
    # 每位数字减去5
    digits = [(d - 5) % 10 for d in digits]
    # 将解密后的数字转换为整数并返回
    return int(''.join(map(str, digits)))

使用示例:

encrypted_num = int(input("请输入一个 4 位整数:"))
decrypted_num = decrypt(encrypted_num)
print(decrypted_num)  

img