Задать вопрос

Почему не выполняется функция?

def way_tuda(str, stolb, current, l):
    t = l[str][stolb]
    # down
    if (str < 5) and (l[str + 1][stolb] == 0):
        l[str + 1][stolb] = current + 1
        way_tuda(str + 1, stolb, current + 1, l)
    # left
    if (stolb>0) and (l[str][stolb-1] == 0):
        l[str][stolb-1] = current+1
        way_tuda(str, stolb-1, current+1, l)
    # RIGHT
    if (stolb<5) and (l[str][stolb+1] == 0):
        l[str][stolb+1] = current + 1
        way_tuda(str, stolb+1, current+1, l)
    # high
    if (str>0) and (l[str-1][stolb] == 0):
        l[str-1][stolb] = current + 1
        way_tuda(str-1, stolb, current+1, l)
    return(l[5][5])

def way_obratno(sstr,stol,current,l,res):

    t=l[sstr][stol]
    if (t==1):
        return res
    #лево
    if (stol>0) and (l[sstr][stol-1]==current-1):
        res='вправо '+res
        way_obratno(sstr,stol-1,current-1,l,str(res))
    #право
    if (stol<5) and (l[sstr][stol+1]==current-1):
        res='влево '+res
        way_obratno(sstr,stol+1,current-1,l,str(res))
    #низ
    if (sstr<5) and (l[sstr+1][stol]==current-1):
        res='вверх '+res
        way_obratno(sstr+1,stol,current-1,l,str(res))
    #верх
    if (sstr>0) and (l[sstr-1][stol]==current-1):
        res='вниз '+res
        way_obratno(sstr-1,stol,current-1,l,str(res))

a = [[0, -1, 0, 0, 0, 0], [0, 0, 0, -1, 0, -1], [0, -1, 0, -1, 0, 0], [0, -1, -1, -1, -1, 0], [0, 0, 0, -1, 0, 0], [1, -1, 0, -1, 0, 0]]
print(way_tuda(5, 0, 1, a))
print(way_obratno(5,5,a[5][5],a,' '))


В функции way_obratno должна возвратиться эта строка "вверх вверх вверх вверх вправо вправо вверх вправо вправо вниз вниз вправо вниз вниз вниз", но возвращается none
Вообще эта программа находит выход из лабиринта и обранто
  • Вопрос задан
  • 77 просмотров
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
IKalentsov
@IKalentsov
Инженер-программист
Здравствуйте.
Чтобы было возвращение "obratno", нужно сохранять значения "res" и возвращать результат, если все условия выполнены успешно.
Для этого нужно, чтобы в каждом условии было реализовано сохранение результата в список/лист.
Удачи!
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы