2016-11-12 93 views
0

我正在爲學校做一個加密項目,並且遇到了將偏移因子添加到每個字符的相應ASCII碼上的問題。我有一個數字列表(例如[[83],[100],[109]]),但其中的一些也有空格 - 例如[[83],[111],[109],[101] ,[98],[111],[100],[121],[''],[111],[110]]。我想爲每個添加一個偏移因子,但我顯然不能將它添加到空間中。我如何忽略它(因爲我仍然希望它出現在列表中)?TypeError:「只能連接列表(而不是」int「)列表」添加一個數字到列表中的每個項目?

這裏是我的代碼:

def encrypttext(): 
     ascii = [] 
     for item in stringlist: 
      if item==" ": 
       ascii_item=[] 
       for char in item: 
        ascii_item.append(" ") 
       ascii.append(ascii_item) 
       continue 
      else: 
       ascii_item = [] 
       for char in item: 
        ascii_item.append(ord(char)) 
       ascii.append(ascii_item) 
     print(ascii) 

     for item in ascii: #Main problem from here downwards 
      if item==' ': 
       continue 
      else: 
       item=item+offsetfac 
       if item>126: 
        item=item-94 
       else: 
        continue 
     print(ascii) 

錯誤:

Traceback (most recent call last): 
    File "C:\Users\jacqu_000\Downloads\ENCRYPTION PROJECT.py", line 100, in <module> 
    encryption=encrypttext() 
    File "C:\Users\jacqu_000\Downloads\ENCRYPTION PROJECT.py", line 71, in encrypttext 
    item=item+offsetfac 
TypeError: can only concatenate list (not "int") to list 

回答

0

你必須記住,item是一個列表,所以你必須訪問嘗試之前,它包含整數項增量:

item[0] += offsetfac 

這同樣適用於前面的條件和其他部分環路的S:

for item in ascii: 
    if item[0]==' ': 
     continue 
    else: 
     item[0] += offsetfac 
     if item[0] > 126: 
      item[0] -= 94 

continueelse是多餘的(循環將繼續在任何情況下),所以它可以安全地除去

相關問題