Цикл while и инструкции break, continue, else

Циклы являются одним из фундаментальных элементов программирования, позволяющих выполнять повторяющиеся действия, что значительно сокращает количество кода и делает программы более гибкими. Цикл while — это один из базовых циклов, который продолжает выполнение, пока заданное условие истинно. В этой лекции мы детально рассмотрим цикл while, его особенности, а также такие полезные операторы, как break, continue и else, которые позволяют управлять поведением цикла.

1. Основы цикла while

Цикл while — это конструкция, которая позволяет выполнять блок кода неоднократно, пока условие остается истинным (True). Как только условие становится ложным (False), выполнение цикла прекращается.

Синтаксис цикла while:

while условие:
    блок_кода
  • условие: Логическое выражение, которое проверяется перед каждой итерацией цикла.
  • блок_кода: Код, который будет выполняться, если условие истинно.

Пример 1: Простой цикл while

count = 0
while count < 5:
    print("Count is:", count)
    count += 1

 

Объяснение:

  • Переменная count инициализируется значением 0.
  • Перед каждой итерацией проверяется условие count < 5.
  • Если условие истинно, выполняется блок кода внутри цикла, который выводит значение count и увеличивает его на 1.
  • Как только count достигает значения 5, условие становится ложным, и цикл прекращается.

Результат:

Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4

 

2. Бесконечные циклы

 

Бесконечный цикл — это цикл, который никогда не прекращает выполнение, потому что условие всегда остается истинным.

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

Пример 2: Бесконечный цикл while

while True:
    print("Это бесконечный цикл")

Этот код будет выводить строку "Это бесконечный цикл" бесконечно, потому что условие True всегда истинно.

 

3. Инструкция break

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

Пример 3: Использование break

count = 0
while count < 10:
    if count == 5:
        break
    print("Count is:", count)
    count += 1

Объяснение:

  • Цикл должен был продолжаться до тех пор, пока count < 10.
  • Однако, когда count достигает значения 5, срабатывает условие if, и инструкция break завершает цикл.

Результат:

Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4

 

4. Инструкция continue

Инструкция continue используется для пропуска текущей итерации цикла и перехода к следующей. Это полезно, когда нужно пропустить выполнение определенных шагов в цикле для отдельных значений.

Пример 4: Использование continue

count = 0
while count < 10:
    count += 1
    if count % 2 == 0:
        continue
    print("Count is:", count)

Объяснение:

  • Цикл увеличивает значение count на 1 в каждой итерации.
  • Если count четное (count % 2 == 0), инструкция continue пропускает текущую итерацию, и вывод не выполняется.

Результат:

Count is: 1
Count is: 3
Count is: 5
Count is: 7
Count is: 9

 

5. Использование блока else с циклом while

Блок else может использоваться с циклом while, что является уникальной особенностью Python. Блок else выполняется, когда цикл завершился естественным образом, то есть условие цикла стало ложным. Если цикл был прерван инструкцией break, блок else не выполняется.

Пример 5: Использование блока else с циклом while

count = 0
while count < 5:
    print("Count is:", count)
    count += 1
else:
    print("Цикл завершен")

Объяснение:

  • Цикл выполняется до тех пор, пока count < 5.
  • После завершения цикла, когда условие становится ложным, выполняется блок else.

Результат:

Count is: 0
Count is: 1
Count is: 2
Count is: 3
Count is: 4
Цикл завершен

Пример 6: Инструкция break и блок else

count = 0
while count < 5:
    print("Count is:", count)
    count += 1
    if count == 3:
        break
else:
    print("Цикл завершен")

Объяснение:

  • Цикл завершится, когда count достигнет 3 из-за инструкции break.
  • Блок else не выполнится, так как цикл был прерван.

Результат:

Count is: 0
Count is: 1
Count is: 2

 

6. Вложенные циклы while

Циклы while могут быть вложенными друг в друга. Это означает, что один цикл может находиться внутри другого, и оба цикла будут выполняться по своим условиям.

Пример 7: Вложенные циклы while

i = 1
while i <= 3:
    j = 1
    while j <= 3:
        print(f"i = {i}, j = {j}")
        j += 1
    i += 1

Объяснение:

  • Внешний цикл i выполняется трижды.
  • Внутренний цикл j выполняется трижды на каждую итерацию внешнего цикла.

Результат:

i = 1, j = 1
i = 1, j = 2
i = 1, j = 3
i = 2, j = 1
i = 2, j = 2
i = 2, j = 3
i = 3, j = 1
i = 3, j = 2
i = 3, j = 3

 

7. Примеры более сложных задач

Задача 1: Поиск простых чисел в заданном диапазоне

Простое число — это число больше 1, которое делится только на 1 и само на себя. Давайте напишем программу, которая найдет все простые числа в диапазоне от 2 до 50, используя цикл while, break и else.

n = 2
while n <= 50:
    is_prime = True
    i = 2
    while i <= n // 2:
        if n % i == 0:
            is_prime = False
            break
        i += 1
    if is_prime:
        print(n)
    n += 1

Объяснение:

  • Внешний цикл n перебирает числа от 2 до 50.
  • Внутренний цикл i проверяет, делится ли n на какое-либо число от 2 до n // 2.
  • Если n делится на i, оно не является простым, и цикл прерывается (break).
  • Если цикл завершился без прерывания, число считается простым, и оно выводится.

Результат:

2
3
5
7
11
13
17
19
23
29
31
37
41
43
47

Задача 2: Игра "Угадай число"

Напишем программу, которая загадывает случайное число от 1 до 100, и предлагает пользователю его угадать. Программа подсказывает, больше или меньше введенное число по сравнению с загаданным, и завершает игру, когда число угадано.

import random
secret_number = random.randint(1, 100)
attempts = 0
while True:
    guess = int(input("Угадайте число от 1 до 100: "))
    attempts += 1
    
    if guess < secret_number:
        print("Загаданное число больше.")
    elif guess > secret_number:
        print("Загаданное число меньше.")
    else:
        print(f"Поздравляю! Вы угадали число за {attempts} попыток.")
        break

Объяснение:

  • Программа загадывает случайное число от 1 до 100.
  • Пользователь вводит свои предположения, а программа подсказывает, угадано ли число или нет.
  • Если число угадано, цикл прерывается (break), и программа сообщает количество попыток.

Цикл while является мощным инструментом для создания программ, которые выполняют повторяющиеся действия до достижения определенного условия. Инструкции break, continue и else предоставляют дополнительные возможности для управления потоком выполнения программы, делая код более гибким и адаптируемым. Понимание того, как правильно использовать эти конструкции, позволит вам писать более эффективные и понятные программы.

Перейти к следующему шагу

Комментарии