Вы должны были включить сообщение об ошибке в свой код, потому что оно должно быть достаточно очевидно из сообщения об ошибке:
>>> 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.
Если в логике вашего кода есть ошибка, она все равно может завершиться ошибкой, но это синтаксическая ошибка!