Почему выводится ошибка index out of range

n = int(input())
b=1
a=[[0 for i in range(n)] for j in range(n)]
for i in range(n+1):
    for j in range(n+1):
        if [0][0]<=[i][j]<=[0][n]:
            a[i][j]+=b
            b+=1
print(a)

Ответы (2 шт):

Автор решения: Rufat

Вот эти строки

for i in range(n+1):
    for j in range(n+1):
        if [0][0]<=[i][j]<=[0][n]:

необходимо заменить на эти:

for i in range(n):
    for j in range(n):
        if a[0][0] <= a[i][j] <= a[0][n-1]:

Полный правильный код такой:

n = int(input())
b = 1
a = [[0 for i in range(n)] for j in range(n)]
for i in range(n):
    for j in range(n):
        if a[0][0] <= a[i][j] <= a[0][n - 1]:
            a[i][j] += b
            b += 1
print(a)
→ Ссылка
Автор решения: cauf

При формировании матрицы

a=[[0 for i in range(n)] for j in range(n)]

вы определяете массив индексов как range(n), что при n = 3 вернет список [0, 1, 2]. А в условии:

if [0][0]<=[i][j]<=[0][n]:

последняя группа индексов определена от самого значения n, то есть [0][3]. Именно здесь и возникает ошибка. Вы пытаетесь обратиться к элементу, которого не существует.

Да и в целом синтаксис с группами индексов не понятен. Вы их берете откуда-то из воздуха. Нужно указать саму матрицу:

if a[0][0] <= a[i][j] <= a[0][n]:

В итоге правильный код будет таким:

n = int(input())
b=1
a=[[0 for i in range(n)] for j in range(n)]
for i in range(n):
    for j in range(n):
        if a[0][0] <= a[i][j] <= a[0][n-1]:
            a[i][j]+=b
            b+=1
print(a)
→ Ссылка