TypeError:“只能连接列表(而不是”int“)列表”添加一个数字到列表中的每个项目?
问题描述:
我正在为学校做一个加密项目,并且遇到了将偏移因子添加到每个字符的相应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
答
你必须记住,item
是一个列表,所以你必须访问尝试之前,它包含整数项增量:
item[0] += offsetfac
这同样适用于前面的条件和其他部分环路的S:
for item in ascii:
if item[0]==' ':
continue
else:
item[0] += offsetfac
if item[0] > 126:
item[0] -= 94
的continue
在else
是多余的(循环将继续在任何情况下),所以它可以安全地除去。