你的一些指標是關閉的,所以我已將其更正到:3,5,4,2,1,1,2,3,4,5
。
下面是你需要的代碼,問題是你只是遍歷行,而不是從它們中提取任何東西。主要是因爲你的功能沒有輸入。
這種方法需要一個類似文件的對象,並作爲「鑰匙」整數的列表:
def cipher(encrypted,key):
return "".join([line[offset] for offset,line in zip(key,encrypted.readlines())])
向外擴張是這樣的:
def cipher(encrypted,key):
message=[]
for offset,line in zip(key,encrypted.readlines()):
message.append(line[offset]
return "".join(message)
或建立字符串作爲你走(因爲數組是可變的,其可能需要更長的時間,而這需要建立一個新的字符串每次迭代):
def cipher(encrypted,key):
message=""
for offset,line in zip(key,encrypted.readlines()):
message = message + line[offset]
return message
這會將密鑰和加密文件與它們結合在一起以創建一個可訪問的元組,以用於索引文件的每一行。如果該文件可能很長,則可能需要使用izip
from itertools
來使用iterable而不是內存中的列表進行壓縮。
並返回文本。
這裏是調用它的一個示例程序:
from StringIO import StringIO
f = StringIO("""washer
thisee
fretl
rjl
do""")
print cipher(f,[3,5,4,2,1,1,2,3,4,5])
當運行打印:
>>> hello
發佈您的代碼或downvotes的洪水做準備。 – alvonellos
您的代碼顯示操作一個文件,但不顯示如何知道索引是什麼。 – 2014-03-28 04:07:21