Python 解密&;在嵌套循环中加密字符串

Python 解密&;在嵌套循环中加密字符串,python,loops,for-loop,Python,Loops,For Loop,我的目标是对一些字符串进行加密/解密。 我从name='Programmstrukturen 2'和spalte=5开始。我的crypt def工作正常,但解密还没有完成 代码如下: def crypt(text,spalte): output='' for x in range(spalte): for i in range(spalte-1): output+=text[x+spalte*i] return output de

我的目标是对一些字符串进行加密/解密。 我从name='Programmstrukturen 2'和spalte=5开始。我的crypt def工作正常,但解密还没有完成

代码如下:

def crypt(text,spalte):
    output=''
    for x in range(spalte):
        for i in range(spalte-1):
            output+=text[x+spalte*i]
    return output

def decrypt(text,spalte):
    output=''
    for x in range(spalte):
        for i in range(spalte-1):
            output+=text[x+spalte*i]
    return output
当我运行简单的打印功能时

print crypt(name,spalte)
>>Parrrmueomkngst rtu2
print decrypt(eman,spalte)
>>Pmk aunrregtrosurmt2
decrypt函数应返回名称字符串。 我知道循环流有问题,但我无法想象有什么问题

编辑1:

用于:

name = 'Programmstrukturen 2'
eman = 'Parrrmueomkngst rtu2'
spalte=5

我已经修好了。正如@pm2ring所评论的那样,我建议您注意垃圾的大小。你的问题是你的解密。其行为与地穴相同。您必须将这些值附加到您对其进行加密的位置上的输出:

def decrypt(text, spalte):
    laenge = len(text)
    output = laenge * [""]
    j = 0
    for x in xrange(spalte):
        for i in xrange(spalte - 1):
            output[x + spalte * i] = text[j]
            j += 1
    return "".join(output)

你用什么做laenge?你有没有意识到当你加密时,它是在同一级别声明中?@RicardoBurillo很抱歉,这是一个格式错误,laenge以前没有使用过,或者应该设置为0?如果你不使用,应该删除。您是否可以添加传递给name和eman的值,以重现您试图执行的操作?根据您输入的内容,您可能会在输出+=text[x+spalte*i]中出现错误,因为您没有检查它的长度(我认为是laenge)for@RicardoBurilloeman是name的加密版本,adddy您的加密算法有点奇怪:它要求
len(text)
等于
spalte*(spalte-1)
。如果
文本
太短,您将得到一个
索引器:字符串索引超出范围
。如果太长,一些字符将不会被加密。谢谢,但在返回“”之前给了我更多错误。加入(输出)TypeError:sequence item 6:应为字符串,非类型foundKudos,用于在OP语言中添加变量名。我认为这是因为输出声明,我编辑了答案。join无法连接None属性