2016-11-12 70 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是多余的(循环将继续在任何情况下),所以它可以安全地除去

相关问题