我目前正在编写一个加密和解密文本和.txt文件的程序,除了解密.txt文件的部分外,整个程序工作正常。这是该程序该部分的代码。
while True:
message = int(input('Open file (1) or type message (2)? '))
if message == 1:
file = input('What file should be opened? ')
file = file + '.txt'
with open(file) as file:
file = [line.rstrip('\n') for line in file]
break
elif message == 2:
file = input('What was the encrypted message? ')
break
else:
print('Please enter 1 or 2\n')
displacement = int(input('What was the displacement? '))
for i in range(len(file)):
num = ord(file[i])
num -= displacement
letter = chr(num)
new_message.append(letter)
new_message = ''.join(new_message)
print('\n' + new_message)
我得到的错误是:'TypeError:ord()需要一个字符,但找到长度为5的字符串'。同一段代码用于加密文本,为什么这会有所不同,哪些是错的?
答案 0 :(得分:0)
代码有很多问题。 首先,这是Ceaser Cipher吗?如果是这样,您应该指定文本是否在UI中加密/解密,因为您必须这样做:
if encrypted==False: num -= displacement
else: num+=displacement
其次,我发现对于密码来说,更容易做一个不同的for循环来处理文本,如:
for char in text:
do_stuff
print char
## etc
最后,主要问题是你如何阅读文本文件。你正在制作一份清单。你应该尝试:
file = file.read()