Лучший способ написать вложенную попытку, кроме python

#python #python-3.x #try-catch

#python #python-3.x #try-catch

Вопрос:

Есть ли лучший способ для меня написать это, не вкладывая его таким образом?

 try:
    if find_path(graph, startPos, (targetX 1,targetY,targetX,targetY)):
        print('YES')
except:
    try:
        if find_path(graph, startPos, (targetX,targetY 1,targetX,targetY)):
            print('YES')
    except:
        try:
            if find_path(graph, startPos, (targetX-1,targetY,targetX,targetY)):
                print('YES')
        except:
            try:
                if find_path(graph, startPos, (targetX,targetY-1,targetX,targetY)):
                    print('YES')
            except:
                print('NO')
  

Комментарии:

1. Вы можете использовать так называемый «вложенный блок попыток»

Ответ №1:

Вы могли бы составить список потенциальных координат, а затем попробовать их каждую по очереди в цикле for, прерывая цикл при успешном завершении:

 success = "NO"
coords = ((targetX 1,targetY), (targetX,targetY 1), (targetX-1,targetY), (targetX,targetY-1))

for coord in coords:
    try:
        x, y = coord
        find_path(graph, startPos, (x, y, targetX,targetY))
    except:
        pass
    else:
        # Set success state and break out of the for loop
        success = "YES"
        break
print(success)