所以我在下面创建了这个代码,根据他们提供的密码文本制作了一个4 *(密码的长度)网格,以处理任何可被4整除的值,我添加了验证这样它只允许长度小于80的字符可以被4整除,所以我希望它能逐行粘贴AKMR和单个字符以下,例如
A K M R
['D', 'C', 'B', 'A']
['B', 'F', 'D', 'C']
['D', 'F', 'B', 'F']
['D', 'D', 'D', 'F']
随机生成的密文是CFFDACFFDBDDBDBDCABBFCABDFFCBDFF(来自用户的16个字符的消息输入转换为密文) 但它反而给出了这个输出,所以它在同一行输出另外4个字符, 当用户输入为8个字符然后变为密文
时,不会发生此问题 A K M R
('C', 'A', 'D', 'B', 'C', 'F', 'D', 'B')
('F', 'C', 'B', 'D', 'A', 'C', 'F', 'D')
('F', 'F', 'D', 'B', 'B', 'A', 'F', 'F')
('D', 'F', 'D', 'D', 'B', 'B', 'C', 'F')
它应该是......
A K M R
('C', 'A', 'D', 'B')
('C', 'F', 'D', 'B')
('F', 'C', 'B', 'D')
('A', 'C', 'F', 'D')
('F', 'F', 'D', 'B')
('B', 'A', 'F', 'F')
('D', 'F', 'D', 'D')
('B', 'B', 'C', 'F')
源代码......
def decodecipher():
global decode
decode=input("Please enter your cipher text\n")
grid1 = []
finalcipher =""
#AKMR
print(" A K M R")
mygrid =([decode[i:i+4] for i in range(0,len(decode),4)])
grid2=list(zip(*mygrid))
for i in range (len(grid2)):
print(grid2[i])
我知道它与我的范围有关,但是我无法弄明白,我已经使用我的网格长度作为变量而不是将范围定义为4但是即使这似乎也没有工作
答案 0 :(得分:0)
mygrid
具有您想要的尺寸。然后你打电话
grid2=list(zip(*mygrid))
将mygrid
(4x8)转换为grid2
(8x4),将print
转换为后者。尝试
for i in range (len(mygrid)):
print(mygrid[i])
或更多pythonic:
for l in mygrid:
print(l)
如果您希望mygrid
中的每个子列表都是单个字符的列表,而不是四个字符的字符串,您可以通过对列表理解的一个小修改来执行此操作:
mygrid = [list(decode[i:i+4]) for i in range(0,len(decode),4)]
# ^ add call to list