Какие циклы есть в Python?

«Какие циклы есть в Python?» — вопрос из категории Python, который задают на 24% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Python я часто использовал следующие циклы при написании скриптов для автоматизации тестов или обработки данных:

  1. Цикл while: Выполняет блок кода, пока условие истинно. Полезен, когда количество итераций заранее неизвестно.

    # Пример: Ожидание появления элемента на странице (упрощенно)
    timeout = 10
    while timeout > 0 and not is_element_present("#submit"):
        time.sleep(0.5)
        timeout -= 0.5
  2. Цикл for: Основной цикл для перебора элементов итерируемого объекта (списка, строки, словаря, range).

    # Перебор тестовых данных из списка
    test_cases = ["user1", "user2", "admin"]
    for username in test_cases:
        run_login_test(username)
    
    # Использование range для фиксированного числа итераций
    for attempt in range(3):  # Повторить действие 3 раза
        retry_api_call()
    
    # Перебор пар ключ-значение в словаре (например, конфигурации)
    config = {"browser": "chrome", "headless": True}
    for key, value in config.items():
        print(f"{key}: {value}")
  3. Конструкции break, continue и else для циклов:

    • break – немедленный выход из цикла.
    • continue – переход к следующей итерации, пропуская оставшийся код тела цикла.
    • else (для циклов) – блок кода, который выполняется только если цикл завершился естественным образом, без break. Часто используется в поисковых операциях.
      for test_file in test_files:
      if not test_file.endswith('.py'):
          continue  # Пропускаем не-Python файлы
      if "skip" in test_file:
          break     # Прерываем выполнение при встрече специального файла
      execute_test(test_file)
      else:
      # Выполнится, если break не сработал
      print("Все тесты из списка обработаны.")
  4. Генераторы списков (list comprehensions): Хотя это не отдельный цикл, это лаконичная замена for для создания списков.

    # Создание списка квадратов чисел
    squares = [x**2 for x in range(10) if x % 2 == 0]  # [0, 4, 16, 36, 64]