Введение

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

В этой статье мы рассмотрим важную конструкцию для программирования — цикл. Ты узнаешь, как избежать дублирования кода в условиях неопределённого количества повторов.

Термины, которые будем использовать: цикл while, бесконечный цикл, итерация.

Что такое цикл?

Цикл — это многократное повторение одних и тех же действий.

В языках программирования выделяют две разновидности циклов, сегодня мы рассмотрим одну из них.

Цикл while

Цикл while — это цикл, который выполняет блок кода до тех пор, пока заданное условие истинно.

В отличие от цикла for, который действует по последовательности элементов, цикл while повторяется неопределённое количество раз, пока условие не станет ложным.

Простыми словами:

Представь, что ты моешь посуду. Ты продолжаешь мыть тарелки ПОКА они есть в раковине. Как только тарелки заканчиваются — ты останавливаешься. Цикл while работает точно так же: он выполняет код ПОКА условие верно.

Когда выбирать while вместо for:

Используй for, когда знаешь точное количество повторов или перебираешь коллекцию.

Используй while, когда количество повторов зависит от условий, которые меняются во время выполнения.

Цикл forЦикл while
Известно количество повторовНеизвестно, сколько повторов
Перебор коллекций, диапазоновОжидание события, условия
for i in range(5):while x > 0:
Счётчик (переменная цикла) управляется автоматическиУсловие нужно менять вручную

Используй while, когда количество повторений зависит от динамических условий, которые могут измениться только во время выполнения программы. Это цикл для «неопределённости» — когда ты не знаешь, сколько шагов потребуется, но точно знаешь, когда нужно остановиться.

Структура цикла

while условие:

блок кода

while — ключевое слово, описывающее начало цикла
условие — любое выражение, результатом которого может стать одно из значений: True или False.

Вложенный блок кода внутри цикла будет выполняться на каждой его итерации.

Важно!

Итерация — выполнение блока кода из тела цикла ровно 1 раз.

Проверь себя. Что выведет код?

x = 3

while x > 0:

print(x)

x -= 1

3
2
1

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

Например, следующий код:

a = 5

while a > 0:

print(a)

Будет бесконечно выводить 5 в консоль, поскольку выражение 5 > 0 истинно, и остаётся таковым на каждой итерации.

Код выше эквивалентен этому:

a = 5

while True:

print(a)

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

Чтобы цикл не был бесконечным, нужно изменять состояние условия:

a = 5

while a > 0:

print(a, end = “ “)

a -= 1

Тогда код выведет: 5 4 3 2 1. Как только a станет равно 0, условие 0 > 0 примет значение False и цикл прервётся.

Проверь себя. Как исправить бесконечный цикл?

y = -10

while y < 0:

print(y)

Добавить изменение переменной y такое, чтобы значение когда-нибудь стало неотрицательным.

Практика

Задача 1: Обратный отсчёт

Программа запрашивает целое положительное число N. Используя цикл while, выведите числа от N до 1 включительно в обратном порядке.

N = int(input())

while N > 0:

print(N)

N -= 1

Задача 2: Сумма вводимых чисел до нуля

Программа должна запрашивать у пользователя числа по одному. Суммируйте все введённые числа. Ввод продолжается до тех пор, пока пользователь не введёт 0. После этого выведите полученную сумму.

total = 0

num = int(input())

while num != 0:

total += num

num = int(input())

print(«Сумма:», total)

Задача 3: Поиск степени двойки

Программа запрашивает целое положительное число X. Найдите наименьшую степень двойки (2ⁿ), которая больше или равна X. Используйте цикл while. Выведите найденную степень и значение 2 в этой степени через пробел.

X = int(input())

power = 0

value = 1 # 2^0

while value < X:

power += 1

value *= 2 # удваиваем значение

print(power, value)

Задача 4: Деление на 2

Программа запрашивает целое положительное число. Пока число чётное, делите его на 2. Выведите, сколько раз пришлось делить число и конечный результат через пробел.

num = int(input())

count = 0

while num % 2 == 0 and num > 0:

num //= 2 # целочисленное деление

count += 1

print(count, num)

Задача 5: Квадраты чисел

Программа запрашивает число M. Выводите квадраты натуральных чисел (1², 2², 3², …) с новой строки, пока квадрат не превысит M. Выведите последнее выведенное число и его квадрат через пробел.

M = int(input())

n = 1

while n * n <= M:

print(n**2)

n += 1

print(n-1, (n-1)**2)

Автор:

Быкова Оксана, методист «100балльного репетитора» по информатике ЕГЭ

Забирай курсы подготовки к ОГЭ и ЕГЭ с жирной скидкой

В 100б ты пробьёшь свой
максимум на экзаменах

наши лучшие курсы

Выбери подходящий курс и предмет, чтобы прокачаться и сдать ОГЭ на «5», а ЕГЭ на 80+ баллов

Выбрать курс

бесплатные материалы

Курсы, вебы, чек-листы — всё за 0 ₽

Забрать за 0 ₽

Интенсив по поступлению

Запишись на интенсив по поступлению, чтобы
взять из ЕГЭ максимум и попасть в вуз мечты

Записаться
В 100балльном репетиторе ты пробьёшь свой максимум на экзаменах

Преимущества подготовки
в 100балльном

10+
лет средний опыт наших преподавателей

18
выпускников сдали ЕГЭ
на 200 из 200 в 2024 году

300k+
учеников поступили в вуз мечты с нашей помощью 

14%
стобалльников России — наши выпускники

2 347
выпускника сдали ЕГЭ на 100 баллов

Преимущества подготовки в 100балльном

Запишись
на бесплатный
вводный урок

Познакомим с преподавателями и платформой

Расскажем про учёбу

Поможем поставить цель

  • 11 класс
  • 10 класс
  • 9 класс
  • 8 класс
  • 7 класс
Запись на вводный урок