Для выхода из вложенного цикла в Python есть несколько способов:
Пример с флагом:
found = False
for i in range(5):
  for j in range(5):
    if i * j == 6:
      found = True
      break # Выход из внутреннего цикла
  if found:
    break # Выход из внешнего циклаПри выходе из вложенных циклов в Python существует несколько подходов, выбор зависит от конкретной задачи и предпочтений разработчика:
Этот метод предполагает установку флага, который будет проверен во внешнем цикле. При срабатывании условия выхода во внутреннем цикле, флаг устанавливается, и внешний цикл также завершается.
outer_loop = True
for i in range(5):
  if not outer_loop:
    break
  for j in range(5):
    if j == 3:
      print("Выход из внутреннего цикла")
      outer_loop = False # Устанавливаем флаг
      break
    print(f"i: {i}, j: {j}")
      Можно определить пользовательское исключение и поднять его во внутреннем цикле. Внешний цикл должен быть заключен в блок `try...except`, чтобы перехватить это исключение.
class BreakOuterLoop(Exception):
  pass
try:
  for i in range(5):
    for j in range(5):
      if j == 3:
        print("Выход из внутреннего цикла")
        raise BreakOuterLoop  # Поднимаем исключение
      print(f"i: {i}, j: {j}")
except BreakOuterLoop:
  print("Выход из внешнего цикла")
      Этот метод может быть полезен, когда логика выхода из цикла более сложная и не ограничивается простым условием.
Самый чистый и рекомендуемый способ - вынести вложенные циклы в отдельную функцию. Тогда можно использовать оператор `return` для немедленного выхода из функции, что эффективно завершает оба цикла.
def process_data():
  for i in range(5):
    for j in range(5):
      if j == 3:
        print("Выход из внутреннего цикла")
        return # Выход из функции
      print(f"i: {i}, j: {j}")
  print("Внешний цикл завершен") # Эта строка не будет выполнена, если сработает return
process_data()
      Этот метод улучшает читаемость и поддерживаемость кода, так как логика выхода четко определена в функции.
Вывод: Лучшим способом, как правило, является рефакторинг в функцию и использование `return`. Это делает код более читаемым и понятным. В остальных случаях следует использовать `break` с флагом или исключения, когда это необходимо для более сложной логики.