2015-11-07 90 views
1

好吧,以便序言我正在嘗試編寫一個採用字符串輸入的加密程序,使用ord()函數將每個字符轉換爲整數,然後使用僞隨機生成的數字序列對其進行轉換。它本質上是一個vigenere密碼程序,我已經很少記下它了。我只在解密功能方面遇到問題,因爲我不知道如何從加密消息中減去密鑰,以便我可以解密它。如何在Python中將正整數列表轉換爲負整數?

def input1(): 
    mes = raw_input('> ').upper() 
    shiftl = [] 
    while len(mes) > len(shiftl): 
     shiftl.append(random.randint(1,26)) 
    return mes, shiftl 

def encrypt(x,y): 
    h = [] 
    for item in x: 
     h.append(ord(item) - 65) 
    e = [sum(i) for i in zip(h,y)] 
    return e 

def decrypt(e, y): 
    u = [sum(i) for i in zip(e,-(y))] 
    d = [] 
    for item in u: 
     d.append(chr(item + 65)) 
    return d 

這是我需要幫助的路線。

u = [sum(i) for i in zip(e,-(y))] 

我試圖簡單地放在列表前面,但一元操作符不能在列表中工作。那麼對於我來說,從加密消息中減去這個列表的最好方法是什麼?

+0

你可以得到一個負數通過從零減去正數。 '-3 == 0 - 3' – MattDMo

回答

0

最有可能的,我沒有得到究竟你正在尋找,但對於其他情況:

def negList(list): 
    for(n in list): 
     n = -n 
    return list 

list = negList(list) 

對不起,如果我給你錯了。

+1

這絕對是我想要的,但它不能按預期工作。正如你寫的那樣,它返回我輸入的列表而沒有改變。我將n = -n定義爲一個單獨的函數,並在for循環中使用.append創建一個列表,但是我得到一個充滿'None' – user5537829

0

如果你有一個清單,你想改變的內容使用列表中理解與切片分配:

a = [1, 3, 5] 
a[:] = [-1*x for x in a] 
print a 

這樣做的輸出將是:

[-1, -3, -5] 
相關問題