


Помогите пожалуйста с задачкой по Питону
Пишу код для задачки
Напишите программу, на вход которой подаётся прямоугольная матрица в виде последовательности строк, заканчивающихся строкой, содержащей только строку "end" (без кавычек)
Программа должна вывести матрицу того же размера, у которой каждый элемент в позиции 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
Sample Input 2:
1
end
Sample Output 2:
4
Код, который у меня на данный момент:
a = []
c = []
k = True
while k is not False:
k = [input().split()]
if k == [["end"]]:
k = False
break
a += k
print(k)
i = 0
j = 0
lena = len(a)
lena0 = len(a[j])
if len(a) == 1:
while i <= (lena0 - 1):
for q in a[j][i]:
if q is a[j][lena0 - 1]:
c.append(int(a[j][i - 1]) + int(a[j][0]) + int(a[j][i]) + int(a[j][i]))
i += 1
else:
c.append(int(a[j][i - 1]) + int(a[j][i + 1]) + int(a[j][i]) + int(a[j][i]))
i += 1
while j < lena:
while i <= (lena0 - 1):
for a[j][i] in a[j][i]:
if a[j][i] is a[j][lena0 - 1]:
c.append(int(a[j][i - 1]) + int(a[j][0]) + int(a[j - 1][i]) + int(a[j + 1][i]))
i = 0
if j < lena:
j += 1
else:
c.append(int(a[j][i-1]) + int(a[j][i+1]) + int(a[j-1][i]) + int(a[j+1][i]))
i += 1
print(c)
Помогите пожалуйста, почему список a изменился?
Я вводил
9 5 3
0 7 -1
-5 2 9
end

Всё намного проще:
inp, s = [], input()
while s != 'end':
~~inp.append(list(map(int, s.split())))
~~s = input()
n, m = len(inp), len(inp[0])
out = [[inp[(i + 1) % n][j] + inp[(i + n - 1) % n][j] + inp[i][(j + 1) % n] + inp[i][(j + n - 1) % n] for j in range(m)] for i in range(n)]
for r in out: print(*r)
Если хочешь создавать out циклами, тоже проще, чем у тебя:
out = []
for i in range(n):
~~out.append([])
~~for j in range(m):
~~~~out[i].append(inp[(i + 1) % n][j] + inp[(i + n - 1) % n][j] + inp[i][(j + 1) % n] + inp[i][(j + n - 1) % n])