Всё, что необходимо знать про циклы for и функцию range()

Циклы for и функция range() в Python для ЕГЭ по информатике

Если вы пишете код на Python для ЕГЭ, то циклы — это то, без чего не обходится почти ни одна программа.
Они нужны везде:
  • в задании №2 — чтобы перебрать все комбинации переменных;
  • в задании №5 — чтобы перебрать числа и найти подходящее;
  • в задании №6 — что бы заставить черепашку повторять действия;
  • в задании №8 — чтобы перебрать все комбинации слов;
  • в задании №14 — чтобы определить цифры или основание системы счисления;
  • в задании №15 — чтобы найти подходящий параметр;
  • в задании №16 — чтобы заменить рекурсию на поэтапное вычисление значений;
  • в задании №17 — чтобы обработать последовательность чисел;
  • в задании №24 — чтобы обработать символы строки;
  • в задании №25 — чтобы найти делители числа;
  • в заданиях №26 и №27 — чтобы прочитать и обработать файл с данными.
Поэтому понимание циклов — это не просто "тема для экзамена". Это навык, который даёт вам больше половины баллов на ЕГЭ.
В этой статье мы разберём:
  • что такое цикл for и как он устроен;
  • что делает функция range() и как её использовать;
  • как перебирать числа и элементы последовательности;
  • как применять циклы в реальных заданиях ЕГЭ.
Поехали!

1. Что такое цикл for?

Цикл for в Python — это инструкция, которая повторяет один и тот же код несколько раз.

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

«Для каждого яблока в коробке: осмотреть его и переложить».

В Python это звучит так:

for apple in box:
    inspect(apple)
    move(apple)

Как это работает в коде

Рассмотрим самый простой пример:

for i in (0, 1, 2, 3, 4):
    print(i)

Что здесь происходит?

  1. Python смотрит на набор значений: (0, 1, 2, 3, 4).
  2. Берёт первое значение (0), присваивает его переменной i.
  3. Выполняет тело цикла (print(i)).
  4. Берёт следующее значение (1), присваивает i.
  5. Снова выполняет print(i).
  6. И так до тех пор, пока значения не закончатся.

Результат:

0
1
2
3
4

Важное правило

Тело цикла — это код, который нужно повторить. Он пишется с отступом (4 пробела) после строки с for.

for i in (0, 1, 2, 3, 4):
    print(i)          # <-- этот код повторяется 5 раз
    print("Привет!")  # <-- этот код тоже повторяется 5 раз

print("Конец")        # <-- этот код выполняется только один раз, после цикла

Результат:

0
Привет!
1
Привет!
2
Привет!
3
Привет!
4
Привет!
Конец

Как это пригодится на ЕГЭ

В задании №2 мы использовали циклы для перебора всех комбинаций переменных:

for x in (0, 1):
    for y in (0, 1):
        for z in (0, 1):
            # тело цикла

Здесь циклы работают по тому же принципу:

  1. Внешний цикл берёт x = 0, потом запускает внутренние циклы, которые перебирают все y и z.
  2. Когда внутренние циклы заканчивают работу, внешний берёт x = 1 и всё повторяется.

Итого: 2 × 2 × 2 = 8 комбинаций.

2. Функция range() — главный инструмент для циклов

Вместо того чтобы писать (0, 1, 2, 3, 4) каждый раз, в Python есть специальная функция range(). Она генерирует последовательность чисел по заданным правилам.

Вот три способа её использования:

Схема работы range() с тремя вариантами

Вариант 1: range(stop) — от 0 до stop−1

for i in range(5):
    print(i, end=" ")

Вывод: 0 1 2 3 4

Вариант 2: range(start, stop) — от start до stop−1

for i in range(2, 6):
    print(i, end=" ")

Вывод: 2 3 4 5

Вариант 3: range(start, stop, step) — с шагом

for i in range(1, 10, 2):
    print(i, end=" ")

Вывод: 1 3 5 7 9

А что, если шаг отрицательный?

Можно идти в обратном порядке:

for i in range(5, 0, -1):
    print(i, end=" ")

Вывод: 5 4 3 2 1

Как это пригодится на ЕГЭ

В задании №2 вместо for x in (0, 1) можно писать for x in range(2):

for x in range(2):
    for y in range(2):
        for z in range(2):
            # тело цикла

Это то же самое, но короче.

3. Главный лайфхак: range(len())

Часто на ЕГЭ нужно перебирать индексы элементов, а не сами элементы. Например, когда вы работаете со списком и вам нужно обращаться к каждому элементу по его номеру.

Для этого используется связка range(len()).

Что делает len()?

Функция len() возвращает длину строки или количество элементов в списке.

data = [10, 20, 30, 40]
print(len(data))  # 4

Как это работает вместе с range()

data = [10, 20, 30, 40]
for i in range(len(data)):
    print(i, data[i])

Результат:

0 10
1 20
2 30
3 40

Чем это отличается от перебора по элементам?

for i in range(len()) vs for x in data

Когда нужны индексы?

Когда вам нужно:

  1. Сравнить соседние элементы (как в задании №17).
  2. Изменить элемент в списке.
  3. Обратиться к элементу по его позиции.

Сравнение for i in range(len()) и for x in data

Разберем на примере списка:

data = [5, 10, 15, 20]

Вариант 1. Перебор по элементам:

for x in data:
    print(x)          # выводит 5, 10, 15, 20

Вариант 2. Перебор по индексам:

for i in range(len(data)):
    print(data[i])    # выводит 5, 10, 15, 20

На ЕГЭ чаще используют второй вариант — for i in range(len(data)), потому что он даёт больше контроля.

4. Управление циклом: break и continue

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

break — аварийный выход из цикла

Команда break полностью останавливает цикл, даже если элементы ещё не закончились.

Пример: Найти первое число в списке, которое делится на 7:

data = [10, 14, 21, 30, 35]
for i in range(len(data)):
    if data[i] % 7 == 0:
        print("Первое число, которое делится на 7:", data[i])
        break

Вывод: Первое число, которое делится на 7: 14

Как только data[i] становится равным 14, условие срабатывает, цикл печатает результат и немедленно останавливается. Дальше перебирать числа смысла нет.

continue — пропуск итерации

Команда continue пропускает текущий шаг цикла и переходит к следующему.

Пример: Вывести все числа из списка, кроме четных:

data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for x in data:
    if x % 2 == 0:
        continue
    print(x)

Вывод:

1
3
5
7
9

Когда x четное, continue срабатывает и пропускает print(x). Все остальные числа выводятся.

Где это пригодится на ЕГЭ?

break часто используют в заданиях, где нужно найти первый подходящий элемент (Задание №5 яркий представитель).

continue полезен, когда нужно обработать только часть данных, пропуская остальные.

5. Вложенные циклы

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

Пример:

for i in range(3):
    for j in range(2):
        print(i, j)

Результат:

0 0
0 1
1 0
1 1
2 0
2 1

Как это работает:

  1. i = 0, запускается внутренний цикл: j = 0, j = 1.
  2. i = 1, снова внутренний цикл: j = 0, j = 1.
  3. i = 2, внутренний цикл: j = 0, j = 1.

Итого: 3 × 2 = 6 итераций.

Как это пригодится на ЕГЭ

В задании №2 мы использовали три вложенных цикла:

for x in range(2):
    for y in range(2):
        for z in range(2):
            # вычисляем функцию

Это даёт 2 × 2 × 2 = 8 комбинаций.

Если переменных 4 (как в задании с w, x, y, z), вкладываем 4 цикла — получаем 16 комбинаций.

6. Три типовые задачи с использованием циклов

Задача 1. Вывести все числа от 1 до N

N = int(input("Введите N: "))
for i in range(1, N + 1):
    print(i, end=" ")
Если N = 5, вывод: 1 2 3 4 5
Почему range(1, N+1)? Потому что range(1, N) даст числа от 1 до N−1.
Задача 2. Найти сумму всех чисел от 1 до N
N = int(input("Введите N: "))
s = 0
for i in range(1, N + 1):
    s += i
print(s)
Если N = 5, вывод: 15
Задача 3. Поиск пар элементов (упрощенный вариант задания №17)
Дан список чисел. Найдите количество пар соседних элементов, в которых хотя бы одно число делится на 3, и максимальную сумму таких пар.
Пример: для списка [6, 2, 9, -3, 6] ответ: 4 11 (пары: 6+2=8, 2+9=11, 9+(-3)=6, -3+6=3; сумма максимальной пары = 11).
data = [6, 2, 9, -3, 6]
count = 0
max_sum = -10**9

for i in range(len(data) - 1):
    if data[i] % 3 == 0 or data[i+1] % 3 == 0:
        count += 1
        s = data[i] + data[i+1]
        if s > max_sum:
            max_sum = s

print(count, max_sum)
Разбор кода:
  1. range(len(data) - 1) — перебираем индексы от 0 до предпоследнего, чтобы не выйти за границу списка.
  2. data[i] % 3 == 0 or data[i+1] % 3 == 0 — проверяем, делится ли хотя бы одно из двух чисел на 3.
  3. Если условие выполнено, увеличиваем count на 1 и считаем сумму пары.
  4. Если сумма больше текущей максимальной — обновляем max_sum.
Результат: 4 11

7. Таблица-шпаргалка

Что бы всегда было под рукой:

Таблица со всеми вариантами range()
Таблица управления циклами: break и continue

8. Примеры, в каких заданиях ЕГЭ помогут цикл for и функция range()

Задание

Как используется цикл

№2

Перебор комбинаций переменных: for x in range(2)

№5

Перебор подходящего числа: for x in range(1, 10000)

№17

Обработка последовательности чисел: for i in range(len(data) - 1)

№25

Перебор делителей числа: for i in range(2, int(n**0.5) + 1)

№26, 27

Чтение и обработка данных из файла: for line in file:

9. Главный вывод

Циклы — это основа программирования на ЕГЭ. Без них вы не решите ни одну задачу, где нужно перебирать варианты, искать максимум/минимум или обрабатывать данные.

Функция range() даёт вам три варианта генерации чисел:

  1. range(stop) — от 0 до stop−1.
  2. range(start, stop) — от start до stop−1.
  3. range(start, stop, step) — с шагом.

А связка range(len()) позволяет перебирать индексы элементов и сравнивать соседние элементы.

Запомните: for i in range(len(data)) — это ваш главный инструмент в заданиях, где нужно обрабатывать последовательности.

Нужна помощь с подготовкой?

Я — Олег Алексеевич, репетитор по информатике. Готовлю к ЕГЭ более 15 лет.

На своих занятиях мы:

  • разбираем структуру экзамена и стратегии решения;
  • пишем код на Python так, чтобы он работал с первого раза;
  • отрабатываем сложные задания 26 и 27 на реальных примерах.

Хотите попробовать? Запишитесь на первое занятие — познакомимся, определим ваш уровень и составим план подготовки.

Переходите на мой сайт, чтобы узнать подробности и записаться: Репетиторы рядом

Made on
Tilda