Добрый день,
Я только начал изучать python с 0 и мне надо решить задачу:
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк. После последней строки матрицы идёт строка, содержащая только строку “end” (без кавычек, см. Sample Input).
Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции i, j равен сумме элементов первой матрицы на позициях (i-1, j), (i+1, j), (i, j-1), (i, j+1). У крайних символов соседний элемент находится с противоположной стороны матрицы.
В случае одной строки/столбца элемент сам себе является соседом по соответствующему направлению.
Sample Input 1:
9 5 3
0 7 -1
-5 2 9
end
Sample Output 1:
3 21 22
10 6 19
20 16 -1
Мой код:
a = list(input().split())
s =
s +=
while a != ‘end’:
a = list(input().split())
s +=
for i in s:
for j in s:
w = s.index(i)
y = s.index(j)
if w == len(s) - 1:
if y == len(s) - 1:
f = (int(s)) + (int(s)) + (int(s)) + (int(s))
else:
f = (int(s)) + (int(s)) + (int(s)) + (int(s))
elif y == len(s) - 1:
f = (int(s)) + (int(s)) + (int(s)) + (int(s))
else:
f = (int(s)) + (int(s)) + (int(s)) + (int(s))
print(f, end=' ')
print()
Подскажите, почему он работает только для квадратной матрицы, а для прямоугольной выдает либо ошибку либо не считает последний столбец?