我是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 ))
答案 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()
。