Циклы for и функция range() в Python для ЕГЭ по информатике
Цикл for в Python — это инструкция, которая повторяет один и тот же код несколько раз.
Представьте, что у вас есть коробка с яблоками. Вы хотите взять каждое яблоко, осмотреть его и положить в другую коробку. Вместо того чтобы писать инструкцию для каждого яблока отдельно, вы говорите:
«Для каждого яблока в коробке: осмотреть его и переложить».
В Python это звучит так:
for apple in box:
inspect(apple)
move(apple) Как это работает в коде
Рассмотрим самый простой пример:
for i in (0, 1, 2, 3, 4):
print(i) Что здесь происходит?
Результат:
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):
# тело цикла Здесь циклы работают по тому же принципу:
Итого: 2 × 2 × 2 = 8 комбинаций.
Вместо того чтобы писать (0, 1, 2, 3, 4) каждый раз, в Python есть специальная функция 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):
# тело цикла Это то же самое, но короче.
Часто на ЕГЭ нужно перебирать индексы элементов, а не сами элементы. Например, когда вы работаете со списком и вам нужно обращаться к каждому элементу по его номеру.
Для этого используется связка 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()) и 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)), потому что он даёт больше контроля.
Иногда нужно не просто перебрать все элементы, а прервать цикл досрочно или пропустить одну итерацию. Для этого в 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 полезен, когда нужно обработать только часть данных, пропуская остальные.
Циклы можно вкладывать друг в друга. Внутренний цикл выполняется полностью при каждом шаге внешнего.
Пример:
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 Как это работает:
Итого: 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 комбинаций.
Задача 1. Вывести все числа от 1 до N
N = int(input("Введите N: "))
for i in range(1, N + 1):
print(i, end=" ") N = int(input("Введите N: "))
s = 0
for i in range(1, N + 1):
s += i
print(s) 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) Что бы всегда было под рукой:
Задание | Как используется цикл |
№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: |
Циклы — это основа программирования на ЕГЭ. Без них вы не решите ни одну задачу, где нужно перебирать варианты, искать максимум/минимум или обрабатывать данные.
Функция range() даёт вам три варианта генерации чисел:
А связка range(len()) позволяет перебирать индексы элементов и сравнивать соседние элементы.
Запомните: for i in range(len(data)) — это ваш главный инструмент в заданиях, где нужно обрабатывать последовательности.
Я — Олег Алексеевич, репетитор по информатике. Готовлю к ЕГЭ более 15 лет.
На своих занятиях мы:
Хотите попробовать? Запишитесь на первое занятие — познакомимся, определим ваш уровень и составим план подготовки.
Переходите на мой сайт, чтобы узнать подробности и записаться: Репетиторы рядом