【问题描述】某情报机构采用公用电话传递数据,数据是5位的整数,在传递过程中是加密的。加密规则如下:每位数字都加上8,然后用和除以7的余数代替该数字,再将第1位和第5位交换,第2位和第4位交换。请编写程序,完成明文至密文的加密过程。
【输入形式】输入一个5位整数
【输出形式】输出加密后的密文整数
【样例输入】12345
【样例输出】65432
完整代码如下:
n=int(input())
a=[]
if 10000>n or 99999<n:
print("您输如的不是五位数,请重新输入:")
else:
b=n%10
c=n//10%10
d=n//100%10
e=n//1000%10
f=n//10000
g=[b,c,d,e,f]
for i in range(len(g)):
g[0]=g[0]+8
g[0]=g[0]%7
a.append(g[0])
del g[0]
print("{}{}{}{}{}".format(a[0],a[1],a[2],a[3],a[4]))
代码解释:
”n=int(input())
a=[]
if 10000>n or 99999<n:
print("您输如的不是五位数,请重新输入:") ”,让用户输入一个五位数,建立一个空列表,并判断用户输入的是不是五位数。
“else:
b=n%10
c=n//10%10
d=n//100%10
e=n//1000%10
f=n//10000 ”,判断是五位数的情况下分别求出该五位数的个,十,百,千,万位数字。
“g=[b,c,d,e,f]”,将分别求出的该五位数的个,十,百,千,万位数字按个,十,百,千,万的顺序存入列表g中。
“for i in range(len(g)):
g[0]=g[0]+8
g[0]=g[0]%7
a.append(g[0])
del g[0] ”,按照加密规则:利用循环将列表g中每个数字都加上8,然后用和除以7的余数代替该数字。然后将替代该数字的余数存入列表a中,之后将列表g中替代该数字的余数删除。
“print("{}{}{}{}{}".format(a[0],a[1],a[2],a[3],a[4]))”,由于列表添加的默认顺序为添加到列表的最后末尾,因此列表a中五位数字的排列顺序已经在将g列表中余数存入列表a中时掉转,此时只需要按正常顺序排列即可。
运行效果展示:
(声明:以上内容均为原创)