0
0 комментариев

Доброго времени суток. Имею задачу на Stepic.org. Возникли с ней некоторые трудности. Если быть точнее, на этапе проверок от list index out of range на последнем вложенном массиве все кроме последнего элемента идут не в ту проверку, и в следствии чего выдаёт Error. Сам код (самый говнокодистый говнокод)

a = []
st = ''
while True:
    st = input()
    if st == 'end':
        break
    else:
        row = list(map(int, st.split()))
        a.append(row)
 
x = len(a[0])
 
b = [[0 for j in range(x)] for i in range(x)]
 
for i in range(x):  #тут начинаются тонны проверок для 'List index out of range' и параллельно проверкам заполнение нового массива
    for j in range(x):
        print(i,j) #вывод для понимания, все ли я делал правильно
        if i == 0:
            if j == 0:
                s = a[i + 1][j] + a[-1][j] + a[i][j + 1] + a[i][-1]
            if j == x - 1:
                s = a[i + 1][j] + a[-1][j] + a[i][0] + a[i][j - 1]
            else:
                s = a[i + 1][j] + a[-1][j] + a[i][j + 1] + a[i][j - 1]
            b[i][j] = s
        if i == x - 1:
            if j == 0:
                s = a[0][j] + a[i - 1][j] + a[i][j + 1] + a[i][-1]
            if j == x - 1:
                s = a[0][j] + a[i - 1][j] + a[i][0] + a[i][j - 1]
            else:
                s = a[0][j] + a[i - 1][j] + a[i][j + 1] + a[i][j - 1]
            b[i][j] = s
        if j == 0:
            if i == 0:
                s = a[i + 1][j] + a[-1][j] + a[i][j + 1] + a[i][-1]
            if i == x - 1:
                s = a[0][j] + a[i - 1][j] + a[i][j + 1] + a[i][-1]
            else:
                s = a[i + 1][j] + a[i - 1][j] + a[i][j + 1] + a[i][1]
            b[i][j] = s
        if j == x - 1:
            if i == 0:
                s = a[i + 1][j] + a[0][j] + a[i][0] + a[i][j - 1]
            if i == x - 1:
                s = a[0][j] + a[i - 1][j] + a[i][0] + a[i][j - 1]
            else:
                s = a[i + 1][j] + a[i - 1][j] + a[i][0] + a[i][j - 1]
            b[i][j] = s
        else:   #а эта ветка проверки, в которую уходит по ошибке последняя строка матрицы, кроме последнего, из за чего вылетает ошибка
            try:
                s = a[i + 1][j] + a[i - 1][j] + a[i][j + 1] + a[i][j - 1]
                b[i][j] = s
            except:
                b[i][j] = i, j
for i in b:
    for j in i:
        print(j,end='\t')
    print() #выводы для понимания, всё ли я делал правильно
print(b)

Если вы поможете понять, почему происходит переход в другую ветку проверки-буду очень благодарен.

P.S. Решения задачи не нужны. Интернет полон их


Добавить комментарий