Введение
В этой статье мы рассмотрим важную конструкцию для программирования — цикл. Ты узнаешь, как работать с диапазоном чисел и управлять поведением цикла с помощью операторов.
Термины, которые будем использовать: цикл, переменная цикла, итерация, оператор in, операторы управления циклом: break и continue.
Что такое цикл?
Цикл — это многократное повторение одних и тех же действий. В языках программирования выделяют две разновидности циклов, сегодня мы рассмотрим одну из них.
Цикл for
Цикл for — это конструкция в программировании, которая позволяет выполнить один и тот же блок кода несколько раз для каждого элемента в наборе данных (например, в списке, строке, диапазоне чисел).
Простыми словами, цикл for — это как конвейерная лента. Ты берёшь коллекцию предметов (например, коробку с яблоками) и выполняешь с каждым предметом одно и то же действие (например, «проверить на спелость»).
Назначение цикла for
- Автоматизировать повторяющиеся действия.
- Обрабатывать каждый элемент коллекции.
- Выполнять код определённое количество раз.
- Перебирать данные без ручного указания индексов.
- Избегать дублирования кода.
Структура цикла
for переменная in набор_данных:
# действие с переменной
for — ключевое слово для обозначения начала цикла.
В качестве переменной на второй позиции ты можешь указать любое имя (обычно используют iдля указания на индекс). Такая переменная называется переменной цикла. На каждой итерации она принимает следующее значение из переданного набора данных.
Важно!
Итерация — выполнение блока кода из тела цикла ровно 1 раз.
in — это оператор, который в контексте цикла for указывает, откуда брать значения для переменной цикла. На каждой итерации переменная принимает следующий элемент из переданной коллекции данных.
В качестве набора данных могут выступать строки и различные коллекции, с которыми ты познакомишься позже. Сейчас мы рассмотрим одну из самых популярных — диапазон целых чисел, который задаётся с помощью функции range().
Эта функция принимает 3 аргумента, из которых только один является обязательным (остальные можно не передавать).
range(start, end, step)
start — целое число, которое является началом диапазона (необязательный параметр, по умолчанию start = 0).
end — целое число, которое является концом диапазона (обязательный параметр).
step (шаг) — целое число, которое указывает, на сколько увеличивается (или уменьшается) значение переменной цикла на каждой итерации (необязательный параметр, по умолчанию шаг = 1)
Важно!
Вторая граница диапазона в цикле берётся не включительно, то есть переменная цикла принимает значения [start, end).
Рассмотрим результаты работы разных циклов:
for i in range(0, 5, 1):
print(i, end = “ “)
Вывод: 0 1 2 3 4
Шаг 1 можно не указывать:
for i in range(0, 5):
print(i, end = “ “)
Вывод: 0 1 2 3 4
Начальную позицию 0 можно так же опустить:
for i in range(5):
print(i, end = “ “)
Вывод: 0 1 2 3 4
Каждый цикл выполнился 5 раз, то есть было 5 итераций с выводом значения переменной цикла.
Шаг может быть отрицательным, тогда важно, чтобы начальная позиция была больше конечной:
for i in range(5, 0, -1):
print(i, end = “ “)
Вывод: 5 4 3 2 1
0 не будет выведен, так как вторая граница не включается, мы остановимся на предыдущем от неё значении, то есть на 1.
Если нужно перебирать только нечётные:
for i in range(1, 5, 2):
print(i, end = “ “)
Вывод: 1 3
Операторы управления циклом. break и continue
Оператор break позволяет досрочно завершить выполнение цикла, его обычно ставят в тело условного оператора для прерывания цикла при выполнении некоторого условия.
Например:
for i in range(1, 10, 2):
print(i, end = “ “)
if i == 5:
break
Вывод: 1 3 5
5 будет выведена, поскольку условный оператор стоит после функции print() и брейк прервёт цикл после вывода 5 в консоль.
Оператор continue позволяет досрочно перейти к следующей итерации цикла, минуя оставшийся блок кода в теле цикла. Его также помещают в условные операторы.
Например:
for i in range(10):
if i % 2 == 0:
continue
# дальнейший код будет пропущен при работе continue
print(i, end = “ “)
Вывод: 1 3 5 7 9
Такая конструкция будет пропускать все чётные числа и распечатывать только нечётные.
Практика
Предлагаю закрепить изученную тему на лёгких задачах!
Задача 1. Сумма до первого числа, кратного 7
Программа просит ввести целое число N. Используя цикл for, найди сумму чисел от 1 до N включительно, но если встретится число, кратное 7 (делится на 7 без остатка), прекрати суммирование (даже если не достигли N). Выведи полученную сумму.
Задача 2. Пропуск чётных чисел
Напиши программу, которая запрашивает число N. Выведи все нечётные числа от 1 до N включительно.
Задача 3. Поиск первого делителя
Напиши программу, которая запрашивает число X. Найди первый делитель числа X в диапазоне от 2 до X-1. Если делитель найден, выведи его и заверши цикл. Если делителей нет, выведи 0.
Задача 4. Числа, не кратные 3
Напиши программу, которая запрашивает число N. Выведи все числа от 1 до N, которые не делятся на 3.
Задача 5. Пока не превысит лимит
Напиши программу, которая запрашивает число M. Суммируй числа, начиная с 1, прибавляя каждый раз на 1 больше, пока сумма не станет больше M. Используй цикл for с break. Выведи последнее добавленное число и итоговую сумму через пробел.
Решения
N = int(input())
total = 0
for i in range(1, N + 1):
if i % 7 == 0:
break
total += i
print(total)
N = int(input())
for i in range(1, N + 1, 2):
print(i)
X = int(input())
divisor = 0
for i in range(2, X):
if X % i == 0:
divisor = i
break
print(divisor)
N = int(input())
for i in range(1, N + 1):
if i % 3 == 0:
continue
print(i)
M = int(input())
total = 0
last_num = 0
for i in range(1, M + 1):
total += i
last_num = i
if total > M:
break
print(last_num, total)
Автор:
Быкова Оксана, методист «100балльного репетитора» по информатике ЕГЭ