问题是:
您的程序需要解码一个名为的加密文本文件 “encrypted.txt”。编写它的人使用了指定的密码 “key.txt”。此密钥文件类似于以下内容:
A B B C C D D E E F F G G H H I I J J K K L L M M N N O O P P Q Q R R S S T T U U V V W W X X Y Y Z Z A
左列表示明文字母,右列表示右列 代表相应的密文。
您的程序应使用“key.txt”解码“encrypted.txt”文件 并将明文写入“decrypted.txt”。
我有:
decrypt = ""
keyfile = open("key.txt", "r")
cipher = {}
for keyline in keyfile:
cipher[keyline.split()[0]] = keyline.split()[1]
keyfile.close()
encrypt = []
encryptedfile = open("encrypted.txt", "r")
readlines = encryptedfile.readlines()
str = ""
for line in readlines:
str = line
letter = list(str)
for i in range(len(letter)):
if letter[i]==",":
decrypt += ","
elif letter[i] == ".":
decrypt+= "."
elif letter[i] == "!":
decrypt += "!"
elif letter[i] == " ":
decrypt += " "
else:
found = False
count = 0
while (found == False):
if (letter[i] == keyline.split()[0][count]):
decrypt += keyline.split()[1][count]
found = True
count += 1
print decrypt
encryptedfile.close()
decryptedfile = open("decrypted.txt", "w")
decryptedfile.write(decrypt)
decryptedfile.close()
这是Python语言。输出确实生成一个名为decrypted.txt的文件,但文件中唯一的东西是A,这对我来说没有意义。对于这个问题,它应该输出更多的权利吗?
答案 0 :(得分:1)
使用enrcypted.txt
中给出的密钥解冻文件key.txt
并将结果保存到decrypted.txt
:
with open('key.txt', 'r') as keyfile:
pairs = [line.split() for line in keyfile]
columns = [''.join(x) for x in zip(*pairs)]
# Or to make it work with lower case letters as well:
# columns = [''.join(x)+''.join(x).lower() for x in zip(*pairs)]
key = str.maketrans(
*reversed(columns)
)
with open('encrypted.txt', 'r') as encrypted_file:
decrypted = [line.translate(key) for line in encrypted_file]
with open('decrypted.txt', 'w') as decrypted_file:
decrypted_file.writelines(decrypted)
答案 1 :(得分:0)
你的while块应该缩进三次 除了count + = 1,它应该比其邻居小一个块
while块的内部并没有使用keyline是字典的事实。