目前正在处理一个置换问题。我已经做了这样的事情:用户输入消息,该消息被加密成一个列表,如下所示:
['BC', 'DE', 'DE', 'DA', 'FD', 'DD', 'BE', 'FE', 'DA', 'EA', 'FE', 'BC']
下一步我要做的是将这个密码进一步转化为一个表格,表格的密钥由用户输入。例如,如果用户输入'CODE',则输出结果如下:
2: Enter the keyword for final encryption: code
C O D E
['B', 'C', 'D', 'E']
['D', 'E', 'D', 'A']
['F', 'D', 'D', 'D']
['B', 'E', 'F', 'E']
['D', 'A', 'E', 'A']
['F', 'E', 'B', 'C']
下一步是获取每列的每个值,并打印出对应字母列的值。因此,我期望的输出结果是:
C D E O
['B', 'D', 'E', 'C']
['D', 'D', 'A', 'E']
['F', 'D', 'D', 'D']
['B', 'F', 'E', 'E']
['D', 'E', 'A', 'A']
['F', 'B', 'C', 'E']
我遇到的问题是如何将每个值放入其对应的列并打印它们。以下是我目前的代码:
def encodeFinalCipher():
matrix2 = []
# Convert keyword to upper case
key = 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 un-ordered matrix to the screen
print (' %s' % ' '.join(map(str, key)))
for letters in matrix2:
print (letters)
unOrderedMatrix = [[matrix2[i][j] for i in range(len(matrix2))] for j in range(len(matrix2[0]))]
for index, item in enumerate (unOrderedMatrix):
print("\n",index, item)
index = sorted(key)
print(index)
我得到了排序后的键的输出:
['A', 'K', 'M', 'R']
我想知道如何将这个排序后的键应用到它们所代表的值上?我知道可以通过以下方式获取第一列:
print(unOrderedMatrix[0])
这将为我提供第一列的列表。非常感谢您的帮助。作为Python的完全新手,任何帮助都将不胜感激。
[[C,D,E,O],[B,C,D,E],[A,D,E,E],[D,D,D,F]....
因为你说要按字母顺序排列? - Tanveer Alam