<p>我把“你好”改成了“vmbjc”。。。我想这就是你的意思,因为当你交替的秘密线,你寻找的“o”的位置在第一个秘密线,其中有一个“c”。第二个秘密是在那个位置用“a”。你知道吗</p>
<pre><code>english = "abcdefghijklmnopqrstuvwxyz" + ",';.?"
secret = []
with open("secrets.txt" , "r") as s:
secret = [line.rstrip() for line in s]
cypher = dict((c, [x[i] for x in secret]) for i, c in enumerate(english))
def translate(s):
secret_index = 0
trans = []
for c in s:
# not sure how spaces are dealt with
trans.append(cypher[c][secret_index] if not c == ' ' else ' ')
secret_index = (secret_index + 1) % len(secret)
return ''.join(trans)
print(translate("hello")) # vmbjc
</code></pre>
<p><strong>更新:</strong>扩展<code>cypher</code>赋值</p>
<pre><code>cypher = {}
for i in range(len(english)): # for each english character
c = english[i]
secrets = []
for j in range(len(secret)): # for each corresponding secret character
secrets.append(secret[j][i])
cypher[c] = secrets # make a mapping of english character to list-of-secret-characters
secrets = [] # clear out list of secret characters for the next english character
</code></pre>