2015-04-26 31 views
-1

我的目標是隱藏/解密一些字符串。 我以name ='Programmstrukturen 2'和spalte = 5開頭。我的隱祕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 

解密函數應該返回名稱的字符串。 我知道循環流程有問題,但我無法想象那裏出了什麼問題。

EDIT1:

用來:

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

您對langege有什麼用?你有沒有意識到,當你隱藏它是在同一級別的聲明? –

+0

@ RicardoBurillo對不起,這是一個格式錯誤,langege之前沒有使用過,或者它應該被設置爲0? – ccg44087

+0

如果你不使用你應該刪除。你可以添加什麼值你傳遞給名稱和eman重現你正在嘗試做什麼?取決於你放的是什麼,你可能會在輸出+ = text [x + spalte * i]時得到一個錯誤,因爲你不檢查它的長度(我認爲laenge是 –

回答

1

我有固定它。我建議你在@PM 2Ring評論時注意spalte的大小。你的問題在於你的解密。它的行爲與隱窩相同。您必須將這些值附加到您已將它們隱藏起來的地方的輸出上:

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) 
+0

謝謝,但之前給了我更多的錯誤:return「」.join(輸出) TypeError:順序項目6:期望的字符串,找到的NoneType – ccg44087

+0

添加變量名字在OP的語言中 – Lucas

+0

我覺得是因爲輸出聲明,我編輯了答案。join不能加入None屬性 –