TypeError:“只能连接列表(不是”int“)列表”为列表中的每个项目添加一个数字?

时间:2016-11-12 20:02:10

标签: python python-3.x

我正在为学校做加密项目,并且遇到了将偏移因子添加到每个字符的相应ASCII码上的问题。我有一个数字列表(如[[83],[100],[109]])但其中一些也有空格 - 例如,[[83],[111],[109],[101] ,[98],[111],[100],[121],[''],[111],[110]]。我想为每个添加一个偏移因子,但我显然无法将其添加到空间中。我如何忽略它(因为我仍然希望它出现在列表中)?

这是我的代码:

    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

1 个答案:

答案 0 :(得分:0)

您必须记住item是一个列表,因此在尝试增加之前,您必须访问它包含的整数项:

item[0] += offsetfac

同样适用于前一个if条件和循环的其他部分:

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

continue中的else是多余的(循环将在任何情况下继续),因此可以安全删除。