Управление потоком выполнения

Операторы break и continue позволяют управлять потоком выполнения циклов, изменяя их стандартное поведение.

Ключевые понятия

Оператор break

Оператор break используется для немедленного выхода из цикла, даже если условие цикла еще не стало ложным.

Пример использования break
# Выход из цикла при достижении определенного условия
for i in range(10):
    if i == 5:
        break
    print(i)
print("Цикл завершен")
Практический пример с break
# Поиск элемента в списке
числа = [1, 3, 5, 7, 9, 11, 13]
искомое = 7

for число in числа:
    if число == искомое:
        print(f"Найдено число {искомое}!")
        break
    print(f"Проверено число {число}")
else:
    print(f"Число {искомое} не найдено")

Оператор continue

Оператор continue используется для пропуска оставшейся части текущей итерации цикла и перехода к следующей итерации.

Пример использования continue
# Пропуск четных чисел
for i in range(10):
    if i % 2 == 0:
        continue
    print(f"Нечетное число: {i}")
Практический пример с continue
# Обработка данных с пропуском некорректных значений
данные = [10, 20, -5, 30, 0, 40, -2]

for значение in данные:
    if значение <= 0:
        continue  # Пропускаем некорректные значения
    print(f"Обрабатываем значение: {значение}")
    результат = 100 / значение
    print(f"Результат: {результат}")

Использование break и continue с while

Операторы break и continue работают аналогично и с циклами while.

Пример с while
# Игра "Угадай число"
import random

загаданное_число = random.randint(1, 10)
попытки = 0

while True:
    попытки += 1
    ввод = input(f"Попытка {попытки}. Введите число от 1 до 10 (или 'выход' для завершения): ")
    
    if ввод.lower() == 'выход':
        print("Игра завершена")
        break
    
    try:
        число = int(ввод)
    except ValueError:
        print("Пожалуйста, введите корректное число")
        continue
    
    if число == загаданное_число:
        print(f"Поздравляем! Вы угадали число {загаданное_число} за {попытки} попыток!")
        break
    elif число < загаданное_число:
        print("Загаданное число больше")
    else:
        print("Загаданное число меньше")

Вложенные циклы и управление потоком

Важно понимать, что break и continue влияют только на самый внутренний цикл.

Пример с вложенными циклами
# Поиск в двумерном списке
матрица = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
искомое = 5
найдено = False

for строка in матрица:
    for элемент in строка:
        if элемент == искомое:
            print(f"Найдено число {искомое}")
            найдено = True
            break  # Выход только из внутреннего цикла
    if найдено:
        break  # Выход из внешнего цикла

# Более элегантное решение с использованием else
for строка in матрица:
    for элемент in строка:
        if элемент == искомое:
            print(f"Найдено число {искомое}")
            break
    else:
        # Продолжаем поиск, если элемент не найден в текущей строке
        continue
    # Выходим из внешнего цикла, если break был выполнен
    break
else:
    print(f"Число {искомое} не найдено")

Практические задания

Задания
  1. Напишите программу, которая запрашивает у пользователя числа до тех пор, пока он не введет 0. Используйте break для выхода из цикла.
  2. Создайте программу, которая выводит все числа от 1 до 20, кроме тех, которые делятся на 3. Используйте continue.
  3. Напишите программу, которая проверяет, является ли введенное число простым. Используйте break для оптимизации.
  4. Создайте программу, которая находит первые 10 четных чисел больше 100.
Решения:

Задание 1:

while True:
    число = int(input("Введите число (0 для выхода): "))
    if число == 0:
        print("Выход из программы")
        break
    print(f"Вы ввели число: {число}")

Задание 2:

for i in range(1, 21):
    if i % 3 == 0:
        continue
    print(i)

Задание 3:

число = int(input("Введите число: "))
простое = True

if число < 2:
    простое = False
else:
    for i in range(2, int(число ** 0.5) + 1):
        if число % i == 0:
            простое = False
            break

if простое:
    print(f"{число} - простое число")
else:
    print(f"{число} - не простое число")

Задание 4:

четные_числа = []
число = 101

while len(четные_числа) < 10:
    if число % 2 == 0:
        четные_числа.append(число)
    число += 1

print("Первые 10 четных чисел больше 100:")
for num in четные_числа:
    print(num)
Предыдущий урок Следующий урок