#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)