Python 解密&;在嵌套循环中加密字符串
我的目标是对一些字符串进行加密/解密。 我从name='Programmstrukturen 2'和spalte=5开始。我的crypt def工作正常,但解密还没有完成 代码如下: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
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属性