某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5, 然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换

题目

某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5, 然后用和除以10 的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换

分析

这道题是把一个四位数字加密后输出一次,然后再把加密的数字还原
先把四位数据接受,然后分别获取一至四位数字
(num+5)%10=加密后的数字,
加密后的数字(5到9)-5=原来的数字
加密后的数字(0到4)+5=原来的数字

代码

# 某个公司采用公用电话传递数据,数据是四位的整数,
# 在传递过程中是加密的,加密规则如下:
# 每位数字都加上5, 然后用和除以10 的余数代替该数字,
# 再将第一位和第四位交换,第二位和第三位交换
# 解析:
# 这道题是把一个四位数字加密后输出一次,然后再把加密的数字还原
# 先把四位数据接受,然后分别获取一至四位数字
# (num+5)%10=加密后的数字,
# 加密后的数字(5到9)-5=原来的数字
# 加密后的数字(0到4)+5=原来的数字
def function(number):
    # 生成器:
    num_list_old = ((number // pow(10, i)) % 10 for i in range(3, -1, -1))  # 个,十,百,千
    # 加密:
    num_list_new = []
    for i in num_list_old:
        num_list_new.append((i + 5) % 10)
    # 解密:
    num_list_new1 = []
    for i in range(0, 4):
        if num_list_new[i] < 5:
            num_list_new1.append(num_list_new[i] + 5)
        elif num_list_new[i] >= 5:
            num_list_new1.append(num_list_new[i] - 5)
    # 把列表里的数组合成一个四位数:
    new_sum, new1_sum = 0, 0
    for k in range(0,4):
        new_sum, new1_sum = new_sum + num_list_new[abs(k-3)] * pow(10, k),\
                            new1_sum+num_list_new1[abs(k-3)] * pow(10, k)

    print('{:0>4d}加密后是:{:0>4},解密后是:{:0>4}'.format(number, str(new_sum), str(new1_sum)))


# 生成1000-9999的数明显是加密后和解密后的数:
for i in range(1000, 9999, 253):
    function(i)

结果

我是你爸爸

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东篱把酒黄昏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值