Не могу разобраться с присваиванием значения вложенного списка?
Всё так происходит из-за способа задания таблицы:
a = [[0] * n] * n
Каждый раз при a[0][0] = 1, оно как бы сначала обращается к a[0] = [[0] * n] а потом уже этом массиве, изменяет первый элемент в последовательности, и далее хоть и кажется, что получается тот массив, который мы хотим, но по итогу выходит что-то вроде... [[1, 0, 0...]] * n , и в конечном итоге, после такой отрисовки устанавливается, что каждый сделующий добавленный элемент, копирует значение первого.

Ps. Для пробы, немного изменил способ создание массива, и всё сработало хорошо
a = []
for i in range(n):
	a.append([0] * n)
Потому что это один список. Походу ты совершенно не знаком с Python.
Попробуй что-то вроде
a = [[0] * n for _ in range(n)]
Я посмотрел на твои вопросы, и рекомендую их пока больше не задавать. Открой учебник по питону, прочитай от корки до корки - это избавит тебя от большинства недопониманий.