附加一个列表以制作4x4矩阵ciph

2024-06-16 10:58:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用append,这样用户的输入将给出一个6x6的密文网格,现在用户输入一个密文(16个字符长),目的是将它放入一个表中,例如decbfeaacdfec将生成一个如下表

  A   K   M   R
['D','B','A','C',]
['E','B','A','F',]
['C','F','C','E',]
['B','E','D','C',]

这是我试图做到这一点的源代码。。。。在

^{pr2}$

所以我先把它分成4个,这样它就有了4个不同的列表集,然后我试着进一步拆分,把它们作为一个列来读,然后像上面一样粘贴。但这是我的输出。。在

Would you like to (E)Encode , (G)Generate final cipher or (D)Decode a message?
******************************************************************************
D
Please enter your cipher text
DECBBEFEAACDCFEC

DECB
BEFE
AACD
CFEC

  A    K    M    R
CFEC
********************
***END OF PROGRAM***
********************

我不明白为什么它只打印最后4个字符,而不向下显示为一列,我可以更改范围,以便它打印出另一组4个字符,但不能同时以我希望的格式打印所有字符


Tags: 用户目的you网格列表源代码粘贴cipher
2条回答

我个人最喜欢的方法是

my_input = "DECBBEFEAACDCFEC"
my_grid = zip(*[iter(my_input)]*int(len(my_input)**0.5))

另一个可能更易读的版本

^{pr2}$

如果您想转置栅格(将其侧转)

transposed_grid = list(zip(*my_grid))

至于为什么每次在for循环range(0,4,1)(可以重写为range(4))中都不工作,您正在将grid2重新创建为一个新的空数组,然后将该集合附加到它。。。所以它只有一排。。。最后一排。。。在

我喜欢乔兰的回答,但要按你在问题中指定的顺序排列清单。。。在

  • 第一个字母是Col1,Row1
  • 第二个字母在Col1,Row2中
  • 等等。。在

。。。我的结局是:

代码

decode="DECBBEFEAACDCFEC"
grid = []
for i in range(4):
    row = [j for j in decode[i::4]]
    grid.append(row)

在这里,我们循环0到3。。。然后我们使用列表理解来获取每4个字符并添加到列表中。然后,在继续之前,列表将附加到网格中

输出

^{pr2}$

相关问题 更多 >