【发布时间】:2015-02-04 17:20:55
【问题描述】:
目前正在研究 Python 中的 2D 转置密码。所以我有一个包含编码消息的列表,如下所示:
['BF', 'AF', 'AF', 'DA', 'CD', 'DD', 'BC', 'EF', 'DA', 'AA', 'EF', 'BF']
下一步是获取该列表,将其拆分并根据用户输入的关键字将其放入一个新矩阵中。我在下面:
Enter the keyword for final encryption: hide
H I D E
['B', 'F', 'A', 'F']
['A', 'F', 'D', 'A']
['C', 'D', 'D', 'D']
['B', 'C', 'E', 'F']
['D', 'A', 'A', 'A']
['E', 'F', 'B', 'F']
接下来我想做但没有做的事情是获取上面的每一列并按字母顺序打印它们,因此得到另一个密文,如下所示:
D E H I
['A', 'F', 'B', 'F']
['D', 'A', 'A', 'F']
['D', 'D', 'C', 'D']
['E', 'F', 'B', 'C']
['A', 'A', 'D', 'A']
['B', 'F', 'E', 'F']
这是我的代码:
def encodeFinalCipher():
matrix2 = []
# Convert keyword to upper case
keywordKey = list(keyword.upper())
# Convert firstEncryption to a string
firstEncryptionString = ''.join(str(x) for x in firstEncryption)
# Print the first table that will show the firstEncryption and the keyword above it
keywordList = list(firstEncryptionString)
for x in range(0,len(keywordList),len(keyword)):
matrix2.append(list(keywordList[x:x+len(keyword)]))
# Print the matrix to the screen
print (' %s' % ' '.join(map(str, keywordKey)))
for letters in matrix2:
print (letters)
return finalEncryption
我已经遍历了 2D 矩阵并得到了所有列条目,如下所示:
b = [[matrix2[i][j] for i in range(len(matrix2))] for j in range(len(matrix2[0]))]
for index, item in enumerate (b):
print("\n",index, item)
OUTPUT:------
0 ['B', 'A', 'C', 'B', 'D', 'E']
1 ['F', 'F', 'D', 'C', 'A', 'F']
2 ['A', 'D', 'D', 'E', 'A', 'B']
3 ['F', 'A', 'D', 'F', 'A', 'F']
如何将keywordKey的每个字母(例如'H''I''D''E')附加到数字0、1、2、3所在的列表中?
或者可能是更有效的解决方案。创建矩阵时如何将字母放入keywordKey列?字典在这里有用吗?然后我可以对字典进行排序并打印最终的密码。
非常感谢
【问题讨论】:
标签: python list encryption transpose