Я, продолжая изучать язык программирования под названием Python, натолкнулся на одну проблему. А именно, я не смог решить задачу на создание спирального списка, решение которой опубликовано по ссылке:
https://habr.com/ru/post/210796/
Да, может быть, я зря создал тему, раз решение я нашёл сам, но я туда не смотрел так как хотел решить задачу самому и, может быть, моё решение отличается, от предоставленного там. Так, вот я написал код, который с теоретической точки зрения должен работать, но на практике он выдаёт ошибку "list assignment index out of range", хотя в теории с индексами всё должно быть верно. Так, что можете всё таки указать, мне на несоответствие в моём коде из-за чего и появляется эта ошибка.
i = int(input())
count, countgor, nup, ndown, nleft, nright, c_max, c = 1, 1, 1, 0, 1, 1, (i ** 2) + 1, 1
matrix = [0] * i
for z in range(i):
matrix[z] = [0] * i
while True:
if count == 1:
countgor += 1
for element in matrix[0]:
element = c
c += 1
else:
if count % 2 == 0:
if count % 4 != 0:
for q in range(1 + ndown, i - 1 - ndown, 1):
matrix[q][i-ndown] = c
c += 1
ndown += 1
if count % 4 == 0:
for q in range(1 + nup, i + 1 - nup, 1):
matrix[-q][nup-(i+1)] = c
c += 1
nup += 1
if count % 2 == 1:
if countgor % 2 == 0:
for q in range(1 + nleft - 1, i + 1 - nleft, 1):
matrix[i-nleft][-(q+1)] = c
c += 1
nleft += 1
countgor += 1
if countgor % 2 == 1:
for q in range(0 + nright, i - nright, 1):
matrix[0+nright][q] = c
c += 1
nright += 1
countgor += 1
count += 1
if c >= c_max:
break
print(matrix)