在Python3 for vigenere密码中使用for循环创建二维列表
所以,我正在尝试制作一个程序,可以在Python3中加密和解密vigenere密码。我这样做是为了练习,但我真的在努力创建一个密码矩阵。如果您不熟悉Vigener密码, 我必须将第一个术语切换到最后一个术语的功能是在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
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()传递所有内容,所以大小写不应该是问题。