我试图写一个函数encr(k,m),其中消息m是字符A ... Za ... z上的任何字符串,其中键k是排列。当len(m)不是len(k)的倍数时,我需要将Z附加到m以使len(m)成为len(k)的倍数。
到目前为止,我已经
了import math, pyperclip
def encr(k, m):
ciphertext = [''] * k
for col in range(len(k)):
pointer = col
while pointer < len(m):
ciphertext[col] += m[pointer]
pointer += 1
return ''.join(ciphertext)
我一直收到错误:TypeError:不能将序列乘以类型&#39; list&#39;的非int。在第3行,encr ciphertext = [''] * k
任何帮助都会很棒
输入的示例是encr([3, 2, 4, 1, 0], 'SineLaboreNihil')
答案 0 :(得分:0)
您当前的错误是k
是函数中的字符串,并且您尝试将其添加到整数 - pointer
。我认为你打算在pointer
加1。
您还尝试在同一个字符串上使用range()
。 range(len(k))
是你需要做的。
您的新错误可以更正如下 -
ciphertext = [''] * len(k)