Проблема с идентацией return
Я написал некоторый код:
global n, m, matrix, pathmatrix
def rec(x, y):
try:
return pathmatrix[x, y]
except:
if x > 0:
left = rec(x - 1, y)
else:
left = (-1, [])
if y > 0:
up = rec(x, y - 1)
else:
up = (-1, [])
maxdist = max(left[0], up[0]) + matrix[x][y]
if left[0] > up[0]:
path = pathmatrix[x - 1, y][1].copy()
path.append('D')
else:
path = pathmatrix[x, y - 1][1].copy()
path.append('R')
pathmatrix[x, y] = (maxdist, path)
return pathmatrix[x, y]
n, m = [int(i) for i in input().split()]
matrix = [[int(i) for i in input().split()] for j in range(n)]
pathmatrix = {(0, 0): (matrix[0][0], [])}
res = rec(n - 1, m - 1)
print(res[0])
print(' '.join(res[1]))
Когда я запускаю код, функция return либо outside, когда я её двигаю, появляется проблема: unindent does not match any outer indentation level. Нужна ваша помощь
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
чтобы не было ошибок ваш код должен выглядеть примерно так:
global n, m, matrix, pathmatrix
def rec(x, y):
try:
return pathmatrix[x, y]
except:
if x > 0:
left = rec(x - 1, y)
else:
left = (-1, [])
if y > 0:
up = rec(x, y - 1)
else:
up = (-1, [])
maxdist = max(left[0], up[0]) + matrix[x][y]
if left[0] > up[0]:
path = pathmatrix[x - 1, y][1].copy()
path.append('D')
else:
path = pathmatrix[x, y - 1][1].copy()
path.append('R')
pathmatrix[x, y] = (maxdist, path)
return pathmatrix[x, y]
n, m = [int(i) for i in input().split()]
matrix = [[int(i) for i in input().split()] for j in range(n)]
pathmatrix = {(0, 0): (matrix[0][0], [])}
res = rec(n - 1, m - 1)
print(res[0])
print(' '.join(res[1]))
в питоне очень важно следить за отступами, которые и определяют/отделяют блоки