我有这个示例代码,我想用另一个字符串取模10等于0的字符串替换“ m”中的每个字符串。例如,在我的代码中,我想要一个新列表:m = ['0001100001000110100000011011110001101010000010000000011100000001100101', '00011100000001101111']
我的代码哪里有错误?
m = ['1100001000110100000011011110001101010000010000000011100000001100101', '11100000001101111']
for i in m:
if len(i) % 10 != 0:
i = ((10 - len(i) % 10) * "0" + i)
m[i] = i
u = ''.join(chr(int(m[i*10:i*10+10],2)) for i in range(len(m)//10))
print("u= ", u)
答案 0 :(得分:0)
您应该在代码中包含错误消息,因为从错误消息中应该可以很明显地看到错误消息:
>>> m[i] = i
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list indices must be integers or slices, not str
当您执行for i in m:
时,您要遍历m
的元素,而不是m
的索引。您似乎在大多数方面都意识到了这一点,但是我认为您的命名方案(i
通常是一个索引)使您失望。
您可以使用enumerate
从可迭代对象中获取(index, value)
的元组:
for i, v in enumerate(m):
if len(v) % 10 != 0:
v = ((10 - len(v) % 10) * "0" + v)
m[i] = v
# etc.
如果您的代码逻辑中存在错误,则仍然可能会失败,但这是语法错误!