例如,此代码输出:
加密邮件: J 6 5 + ~5 +〜=〜* 9 + *
解密邮件: T~h~i~s~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
...由于解密方法将空格视为'〜'这一事实。
from collections import defaultdict
e1 = {}
e2 = {}
e3 = {}
d3 = {}
d2 = {}
d1 = {}
print "Would you like to encrypt 'e' or decrypt 'd' a message?"
count = 1
while count >= 1:
eod = raw_input("> ")
if eod in ("Encrypt", "encrypt", "e", "E"):
print "Enter your message here:"
emessage_in = raw_input("> ")
elength = len(emessage_in)
elistm = list(emessage_in)
for x in range(0, elength):
e1[x] = elistm[x]
e2[x] = ord(e1[x])
e3[x] = 158 - e2[x]
emessage_out = chr(e3[x])
print emessage_out,
count = 0
elif eod in ("Decrypt", "dencrypt", "d", "D"):
print "Enter your message here:"
dmessage_in = raw_input("> ")
dlength = len(dmessage_in)
dlistm = list(dmessage_in)
for y in range(0, dlength):
d3[y] = dlistm[y]
d2[y] = ord(d3[y])
d1[y] = 158 - d2[y]
dmessage_out = chr(d1[y])
print dmessage_out,
count = 0
else:
print "Please type 'e' or 'd':"
count += 1
答案 0 :(得分:0)
您是否认为我花了十分钟的时间进行故障排除才意识到您正在循环调用print
? :)添加/修改的行被注释。
if eod in ("Encrypt", "encrypt", "e", "E"):
print "Enter your message here:"
emessage_in = raw_input("> ")
elength = len(emessage_in)
elistm = list(emessage_in)
emessage_out = '' # initialize an empty string
for x in range(0, elength):
e1[x] = elistm[x]
e2[x] = ord(e1[x])
e3[x] = 158 - e2[x]
emessage_out += chr(e3[x]) # concatenate each character onto that string
count = 0
print emessage_out # move this out of the loop
elif eod in ("Decrypt", "dencrypt", "d", "D"):
print "Enter your message here:"
dmessage_in = raw_input("> ")
dlength = len(dmessage_in)
dlistm = list(dmessage_in)
dmessage_out = '' # initialize an empty string
for y in range(0, dlength):
d3[y] = dlistm[y]
d2[y] = ord(d3[y])
d1[y] = 158 - d2[y]
dmessage_out += chr(d1[y]) # concatenate each character onto that string
count = 0
print dmessage_out # move this out of the loop