0

我要做的是制作一个程序,用字母 AZ 加密文本文件(您指定),然后将其保存在另一个文件中。

例如,使文本文件中的第一个字母为“A”,第二个字母为“B”,第三个字母为“C”等。

我想知道是否有人可以帮助我,或者至少给我一些关于如何开始的提示。

4

2 回答 2

3

如果我从字面上理解你,这就是:

from itertools import cycle
import string

with open('input.txt', 'rt') as input, open('output.txt', 'wt') as output:
    cipher = cycle(string.uppercase)
    for line in input:
        encrypted = []
        for c in line:
            if c in string.letters:
                encrypted.append(cipher.next())
            else:
                encrypted.append(c)
        output.write(''.join(encrypted))

输入文件:

This is a sentence.
And so is this.

输出文件:

ABCD EF G HIJKLMNO.
PQR ST UV WXYZ.

这样做的问题是我认为没有一种实用的方法可以取消加密文本,因为在此过程中会丢失大量信息 - 字母的加密版本仅取决于它在文件中的相对位置,并且不是原来的样子。

于 2012-11-17T15:35:54.503 回答
0

我会尝试:

from string import ascii_uppercase
from itertools import count
from operator import itemgetter


text = 'hellothere'

counter = count(0)
ref = {}
for ch in text:
    if ch not in ref:
        ref[ch] = next(counter)

letters = ''.join(el[0] for el in sorted(ref.iteritems(), key=itemgetter(1)))
frm, to = zip(*zip(letters, ascii_uppercase))

from string import maketrans

trans = maketrans(''.join(frm), ''.join(to))
print text.translate(trans)

# ABCCDEABFB
于 2012-11-17T15:39:08.623 回答