使用输入和输出文件进行加密

时间:2018-05-28 00:41:12

标签: python python-3.x

我是python的新手,我坚持下面的任务。下面是我输入文件的示例以及我想要输出的内容。

输入文件消息(来自在线样本)

So pure of heart
And strong of mind
So true of aim with his marshmallow laser
Marshmallow laser

输出文件消息

LhtinkXthYtaXTkm
ugWtlmkhgZthYtfbgW
LhtmknXthYtTbftpbmatabltfTklafTeehpteTlXk
FTklafTeehpteTlXk

以下是我的语法和指导,为什么它没有完成预期的任务会有所帮助。它打印'wwww'....我相信每行都是'w'。

inputFileName = input("Enter the message to encrypt: ")
key = int( input("Enter the shift key: " ))
outputFileName = input("Enter the output file name: " )

infile=open(inputFileName,"r")
outfile = open( outputFileName, "w" )

sequence=infile.readlines()

alphabet = " ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
shiftedAlphabetStart = alphabet[len(alphabet) - key:]
shiftedAlphabetEnd = alphabet[:len(alphabet) - key]
shiftedAlphabet = shiftedAlphabetStart + shiftedAlphabetEnd


print( alphabet )
print( shiftedAlphabet )

encryptedMessage = ''
for character in sequence:
    letterIndex = alphabet.find( character )
    encryptedCharacter = shiftedAlphabet[letterIndex]
    #print( "{0} -> {1}".format( character, encryptedCharacter ) )

    encryptedMessage = encryptedMessage + encryptedCharacter

print( "The encrypted message is: {0}".format( encryptedMessage ))

1 个答案:

答案 0 :(得分:1)

如果你print(sequence),你会发现它是一个行列表,而不是一个字符串。

因此,当您使用for character in sequence:迭代它时,您不是逐个字符地迭代原始文本,而是逐行遍历列表。

这是因为readlines()返回一个行列表。

如果您仍想使用readlines(),可以尝试添加以下内容:

original_text = ''

for line in sequence:
    original_text += line

更好的方法是,只需将sequence = infile.readlines()更改为sequence = infile.read()