讨论
plaincode =input(“请输入明文:
forpin plaincode:
iford("a”)<=ord(p) <=ord("z”):
print(chr(ord("a")+(ord(p)-ord("a")+3)%26),end='')
else:
print(p,end=!)
上述程序有什么问题?
可以在哪些方面进行改进?
·请你进行重构
1、没有考虑大写
2、加密参数固定,不能修改(考虑输入异常和类型判断)
3、没有对应解密
4、没有定义输出数据,导致输出语句混刮
Liuminatad 0412@Hotmail.con
plaincode =input('请输入明文:')
s = []
for p in plaincode:
if ord('a')<=ord(p)<=ord('z'):
s.append(chr(ord("a")+(ord(p)-ord("a")+3)%26)) # 将小写字母转变为顺序加3的字母,例如a-d,b-e,。。。,x-a,y-b
elif ord('A')<=ord(p)<=ord('Z'):
s.append(chr(ord("A")+(ord(p)-ord("A")+3)%26)) # 1、考虑大写:将大写字母同样按照以上规则编码
else:
s.append(p)
print("编码:",''.join([i for i in s]))
解码过程:
s1 = []
for p in plaincode: # 也可以把plaincode改为s,将s解码回plaincode
if ord('a')<=ord(p)<=ord('z'):
s1.append(chr(ord("a")+(ord(p)-ord("a")-3)%26))
elif ord('A')<=ord(p)<=ord('Z'):
s1.append(chr(ord("A")+(ord(p)-ord("A")-3)%26))
else:
s1.append(p)
print("解码:",''.join([i for i in s1]))