在Python3 for vigenere密码中使用for循环创建二维列表

在Python3 for vigenere密码中使用for循环创建二维列表,python,string,python-3.x,encryption,vigenere,Python,String,Python 3.x,Encryption,Vigenere,所以,我正在尝试制作一个程序,可以在Python3中加密和解密vigenere密码。我这样做是为了练习,但我真的在努力创建一个密码矩阵。如果您不熟悉Vigener密码, 我必须将第一个术语切换到最后一个术语的功能是shift,它工作得很好。我只需要创建一个列表,让字母表的每一个值都发生变化。我的代码如下 import string alpha = list(string.ascii_lowercase) def shift(inList): #Shifts the first item

所以,我正在尝试制作一个程序,可以在Python3中加密和解密vigenere密码。我这样做是为了练习,但我真的在努力创建一个密码矩阵。如果您不熟悉Vigener密码,

我必须将第一个术语切换到最后一个术语的功能是
shift
,它工作得很好。我只需要创建一个列表,让字母表的每一个值都发生变化。我的代码如下

import string

alpha = list(string.ascii_lowercase)


def shift(inList):  #Shifts the first item in the list to the end
    first = inList[0]
    inList.pop(0)
    inList.append(first)
    return inList

lastList = alpha
cipher = alpha
for item in alpha:
    print(alpha.index(item))
    cipher = cipher[].append([shift(lastList)])
    #global lastList = cipher[-1]
    print(lastList)
    print(cipher)

我的问题是创建保存vigenere密码的2D数组。我似乎无法让它工作。以上是我所做的最远的一次,这个解决方案无法编译

如果您只想创建表,您可以一次完成,如下所示:

for i in range(26):
     left = string.ascii_uppercase[i:]
     right = string.ascii_uppercase[:i]
     print('{}{}'.format(left, right))   

我正在自己构建一个,下面是我创建表的方法:

count = 0
ext_alph = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
alph_table = []
for y in range(26):
    new_row = []
    for x in range(26):
        new_row.append(ext_alph[x+count])
    count += 1
    alph_table.append(new_row)
for r in alph_table:
    print(r)

我想你可以把每一行的内容都转换一下。因为我不想直接从字母表字符串的末尾移到开头,继续创建后面的行(例如,以x、y、z、a、b开头),所以我只在末尾添加了另一个字母表。最后两行仅用于显示表格,顺便说一句。

问题是什么?你的解决方案出了什么问题?我编辑了这个问题以使它更清楚。我编辑了这个问题以防不清楚:我正在尝试生成一个二维数组,这正是我一直在努力解决的问题。我正在通过.lower()传递所有内容,所以大小写不应该是问题。