我已成功设法创建了一个代码,该代码使用程序中较早的随机生成的偏移系数对文本文件进行加密,但我不知道如何在不加密的情况下将空格留在原来的位置?< / p>
text_file = open("sample.txt", "r")
characters = []
for line in text_file:
for c in line:
characters.append(c)
text_ascii = []
text_number = 0
new_number = 0
cipher_text = ""
for i in characters:
if i not in (" "):
text_ascii = ord(i)
text_number = text_ascii + offset_factor
if text_number > 126:
text_number = text_number - 94
new_number = chr(text_number)
cipher_text = cipher_text + new_number
print (cipher_text)
我现在的代码并没有对空格进行加密或完全包含它们。
文本文件的内容(称为&#39; sample.txt&#39;以及所有在一行中)是:
在拉曼查的某个地方,在一个我不记得的名字的地方,一位绅士不久前生活过,其中一位在架子上有长矛和古盾的人,还有一只瘦小的唠叨和一只赛狗用于比赛
答案 0 :(得分:1)
你忘了处理 空格的情况。
if ...:
...
else:
cipher_text += ' '
答案 1 :(得分:0)
会起作用,但我建议你使用函数maketrans,并在python 3+中翻译你必须使用str.maketrans和str.translate,但python 2.x你必须导入字符串并使用string.maketrans和string.translate。使用这些函数,python允许一个非常有效,简短且易于遵循的凯撒密码加密方法......
message = input('enter message').lower()
offset = int(input('enter offset (enter a negative number to decrypt)'))
alphabet = 'abcdefghijklmnopqrstuvwxyz'
enc_alphabet = (alphabet[alphabet.index(alphabet[offset]):len(alphabet)])+alphabet[0:offset]
data = str.maketrans(alphabet,enc_alphabet)
final_message = str.translate(message, data)
print(final_message)