☑ Цикл for — надёжный помощник в решении повседневных задач
☑ Цикл for в Python — мощный инструмент, который может значительно упростить жизнь программиста
◾Цикл for — это управляющая конструкция, которая выполняет определённые инструкции заданное количество раз или до тех пор, пока не будет выполнено условие.
Цикл for можно сравнить с конвейером на заводе. Каждый элемент последовательно обрабатывается и переходит на следующий этап производства →
Тело цикла выполняется для каждого элемента последовательности, как рабочие выполняют свою задачу на конвейере. Это позволяет автоматизировать повторяющиеся операции и ускорить процесс обработки данных.
- Пример записи цикла в Python ⤵
Для написания алгоритма вы можете использовать любую удобную среду (IDLE, PyCharm или Visual Studio). Для начинающих программистов рекомендую использовать именно IDLE.
Цикл for нужен для того, чтобы автоматизировать выполнение повторяющихся действий. С его помощью можно перебрать элементы последовательности (списка или строки) и выполнить над ними какие - либо операции. Это позволяет избежать ручного написания кода и сделать программу эффективной.
Цикл for в Python — мощный инструмент, который может значительно упростить жизнь программиста
С помощью цикла for можно перебрать элементы последовательности: списка, кортежа или строки
🔃Что такое ОБРАБОТКА ПОСЛЕДОВАТЕЛЬНОСТЕЙ?
Аналогия из жизни: покупка продуктов в супермаркете. Представьте, что у вас есть список продуктов, которые вам нужно купить: молоко, сыр, хлеб и фрукты. Вы можете пройтись по этому списку поочередно, беря каждый продукт из списка и помещая его в корзину.
Итак, процесс будет выглядеть следующим образом:
- У вас есть список продуктов: ['молоко', 'сыр', 'хлеб', 'фрукты']
- Вы начинаете цикл for и проходите по каждому элементу списка.
- Для каждого продукта в списке (первый элемент - молоко, второй - сыр и т.д.), вы берете этот продукт и помещаете его в корзину.
- После того как вы пройдетесь по всем элементам списка, у вас будет заполненная корзина с товарами, которые вы хотели купить.
С помощью цикла for вы можете как создавать список продуктов и заполнять корзину, так и разбирать готовую корзину с продуктами.
Также, данный цикл используется при работе с файлами, для чтения или записи данных.
Как записать цикл for в Python?
- for — конструкция, с которой и начинается цикл.
- i — переменная цикла (счётчик цикла). Можно присвоить любое имя. Принято использовать именно (i), от первой буквы слова «item», что в переводе означает «позиция».
- in — оператор. Определяет каждый элемент последовательности, который будет присвоен переменной цикла.
В данном примере, in указывает на то, что переменная i будет последовательно принимать значения от 0 до 4, поочередно проходя элементы последовательности range(5).
Что такое RANGE?
Range — это встроенная функция в Python, которая генерирует последовательность чисел.
Она может быть полезна при работе с циклами, например, для перебора элементов списка или выполнения повторяющихся действий заданное количество раз.
Функция range() необходима для создания цикла for с повторяющимися действиями
→ Синтаксис функции range:
range(start, stop, step)
- start (необязательный параметр) — начальное значение последовательности
- stop — конечное значение последовательности (не включая его)
- step (необязательный параметр) — шаг последовательности. По умолчанию равен 1
Функция range() хранит в себе список чисел, который начинается с первого указанного в скобках числа и заканчивается числом, на единицу меньшим второго. Поэтому range(1,4) — это 1, 2, 3
Вот несколько примеров использования функции range:
⒈ Создание последовательности чисел от 0 до 5 (не включительно):
⒉ Создание последовательности чисел с шагом 2:
→ Рассмотрим детально параметры функции range(2, 11, 2):
- [2] — начальное значение последовательности.
- [11] — конечное значение последовательности (не включая его, x = 10).
- [2] — шаг последовательности.
При каждом шаге переменная (х) будет увеличиваться на 2. Сначала х = 2, потом х = 2 + 2 = 4, потом х = 6, х = 8 и х = 10.
❗Убывающая последовательность
В Python можно создать цикл for с убывающей последовательностью — от большего значения к меньшему →
⒊ Создание последовательности чисел от 8 до 1 (не включительно) с шагом -2:
→ Рассмотрим детально параметры функции range(8, 1, -2):
- [8] — начальное значение последовательности.
- [- 1] — конечное значение последовательности.
- [- 2] — шаг последовательности.
При каждом новом шаге переменная (j) будет уменьшаться на 2. Сначала j = 8, потом j = 8 - 2 = 6, потом j = 4, j = 2 и j = 0.
Range — это встроенная функция в Python, которая генерирует последовательность чисел.
range(1,4) = 1, 2, 3
Цикл FOR со строками (str)
— для перебора элементов последовательности (строки)
- Цикл for позволяет работать с последовательностями в Python: списки, кортежи или строки
- Цикл по очереди проходит по каждому символу в строке и выполняет указанный внутри цикла код. Это позволяет работать с каждым символом строки отдельно.
Принципы работы цикла for со строками ⤵
▪ Вывод каждого символа строки на экран. Строка записана в отдельную переменную:
Цикл for проходит по каждому символу переменной (s)
В переменной (s) записана строка ('Help!'), значит переменная (i) каждый раз будет принимать соответствующее значение из строки ('Help!') →
i = H → i = e → i = l → i = p → i = !
Так как внутри цикла записана функция print(), то каждое значение переменной (i) будет выводиться на экран.
▪ Вывод каждого символа строки на экран. Цикл for выполняется непосредственно по строке:
↑ В данной программе цикл for перебирает символы строки 'ABCD', без применения дополнительных переменных. Чтобы запустить цикл, нужно вместо range() взять непосредственно саму строку.
▪Вывод определенного индекса строки на экран:
В Python метод index() используется для поиска индекса (то есть позиции) элемента в строке. Если необходимо узнать на какой позиции располагается элемент строки, нужно использовать этот метод ⤵
Цикл for позволяет выводить как индекс каждого элемента, так и его значение:
Это как если бы вы искали слово в книге и отмечали, на какой странице оно находится.
Нумерация индексов в Python начинается с нуля
❸ Вывод каждого индекса и символа строки с помощью функции range()
🔃 Отличие данного примера от предыдущего в обозначении индекса строки. В функцию print() передаётся дополнительный аргумент s[i] - индекс текущего элемента.
Что значит s[i] - ?
- s — имя переменной, в данном примере это строка (s = 'Help')
- i — переменная цикла, последовательно принимает значения от 0 до 4
- s[i] — элемент с номером индекса (i) из строки (s)
Так как цикл for будет проходить по элементам последовательности от 0 до 4, то первое значение для i = 0. Соответственно, Python определит, что место (индекс), которое занимает символ H, равно 0. Так как данный символ стоит на первом месте. Поэтому s[H] = 0.
🔝В данном примере цикл будет запущен не по самой строке (s), а по длине строки. Поэтому, переменная (i) будет принимать значения от 0 до 4, то есть до длины строки.
- Зачем в примере используется функция len()?
— Благодаря функции len можно задать необходимый диапазон в range()
→ Функция len() используется для определения длины (количества элементов) объекта. Если цикл for запускается по строке, то диапазоном может выступать длина строки
- len() — встроенная функция. Определяет количество символов в строке
- len() — работает со строками, списками, кортежами, словарями и множествами
- len('Help') = 4
❗Функция len() не может быть использована для числовых типов данных в Python, таких как (int) и (float)
❗Цикл for для решения Задания №12 ЕГЭ
как можно использовать цикл при решении задания №12 ЕГЭ (Исполнитель Редактор)
Рассмотрим условие одного из заданий ЕГЭ №12:
К исходной строке, содержащей более 60 единиц и не содержащей других символов...
Как создать строку, содержащую более 60 единиц? Ведь, точное количество единиц не известно!
Используем цикл for для создания необходимого количества строк.
Благодаря принципу работы данного цикла, можно создавать строки с любым количеством единиц (61 единица, 62 единица и так далее). Цикл for будет самостоятельно увеличивать переменную, которая отвечает за длину строки.
Для начала, попробуем разобраться с более простым примером:
После выполнения кода, на экране появится четыре различные строки. Данный ответ удаётся получить, используя цикл for. Каждый проход цикла, в переменную (s) записывается новая строка. Благодаря операции конкатенации (склеивания строк), удаётся получить на выходе строки различной длины.
'1' * 1 = '1'
'1' * 2 = '11'
'1' * 3 = '111'
В Python операция '1' * i является операцией конкатенации (склеивания) строки, где строка '1' повторяется i-ое количество раз.
Если в команде print(s) добавить ещё и переменную (i), то можно отследить как изменяется строка в зависимости от переменной цикла.
Код программы, для создания строки, содержащей более 60 единиц и не содержащей других символов:
🆘Важный момент:
Внимательный читатель заметит, что в условии не указано конечное количество единиц.
К исходной строке, содержащей более 60 единиц
Какое тогда указать второе число в функции range()? Всё на интуитивном уровне. Как правило, большие числа указывать не нужно. Так как составители заданий ЕГЭ, учитывают этот момент. Ответ будет находиться где - то недалеко. Диапазон от 5 до 20 значений максимум.
range(61, 70) или range(61, 80) или range(61, 100)
Также, стоит не забывать про оператор break. В Python данный оператор используется для досрочного прерывания цикла.
Этот код выведет на экран числа от 0 до 3. Затем прервёт цикл, когда переменная (x) станет равна 4.
len() — встроенная функция. Определяет количество символов в строке.
Двойные (вложенные) циклы FOR
это структура, которая позволяет выполнять один цикл внутри другого
В некоторых случаях для решения задачи необходимо применять один цикл внутри другого. Такие конструкции называются двойными или вложенными циклами.
Например: нужно создать (сгенерировать) комбинации произвольных чисел ⤵
В данном примере на экране будут отображены следующие комбинации чисел: 03, 04, 05, 13, 14, 15
- i — переменная верхнего цикла
- j — переменная нижнего цикла
Нижний цикл (for) будет выполнен для каждого значения переменной (i) из верхнего цикла.
❗Важно помнить:
Вложенные циклы увеличивают время выполнения программы ⤵
→ Для каждого значения переменной верхнего цикла (i) будут перебираться все варианты нижнего цикла (j). Потому сложность вложенного цикла будет квадратичная и равняться O(n²)
Квадратичная сложность — когда время выполнения программы пропорционально квадрату размера входных данных. Обозначается как O(n²)
🕘 Поэтому следует внимательно относиться к выбору алгоритма. С осторожность использовать вложенные циклы, если нет возможности решить задачу без них.
Оператор break во вложенных циклах
для досрочного выхода из цикла
Оператор break позволяет досрочно завершить текущий цикл. Выполнение программы продолжится с места, следующего за циклом ⤵
❗break завершает только ближайший цикл. То есть цикл, расположенный над оператором break.
🚩 flag для остановки цикла FOR
используется для создания определенных условий выхода из цикла
flag — имя переменной, которая имеет логический тип данных (bool)
p.s. название (имя) переменной можно выбрать любое (например: a, f, qwer, count и так далее). flag - для удобства и лучшего понимания алгоритма
Переменная (flag) позволяет вручную управлять досрочным выходом из циклов (for) внешних или внутренних.
🔸 Если в процессе написания алгоритма вы понимаете, что последующие вложенные циклы нецелесообразны, просто установите флаг (flag = True), чтобы затем выйти из всех уровней циклов.
- flag = False (флаг как-бы опущен вниз, значение переменной = ЛОЖЬ)
- flag = True (флаг поднят, значение переменной = ИСТИНА)
🚥 Переменная flag играет роль индикатора. Данный индикатор уведомляет в нужный момент о выполнении определенного условия в программе. После чего происходит остановка внешнего цикла (for).
Цикл FOR со списками [list]
используется для перебора элементов и индексов в списках (list), упрощает работу с последовательностями
→ Список можно представить как контейнер. Он может содержать множество других объектов: числа, строки, другие списки и даже функции.
Вспоминаем аналогию из жизни про список продуктов в супермаркете, в начале статьи:
Представьте, что у вас есть список продуктов, которые вам нужно купить: молоко, сыр, хлеб и фрукты. Вы можете пройтись по этому списку поочередно, беря каждый продукт из списка и помещая его в корзину.
→ Рассмотрим, как это выглядит на практике:
- product — список, в котором записаны все продукты
- ['молоко', 'сыр', 'хлеб', 'фрукты', 'шоколад'] — элементы списка (данные, которые хранятся в списке)
Цикл for пройдет через каждый элемент списка (product) один за другим и отобразит их на экране.
❕В данном списке (product) все элементы имеют строчный тип (str)
Тип данных (str) в Python представляет собой последовательность символов. Он используется для хранения и обработки текстовых данных.
→ Вывод всех элементов списка, состоящего из чисел, на экран:
- mylist — список с числовыми элементами
- [-5, 0, 100, 23, 30] — элементы списка (данные, которые хранятся в списке)
Цикл for пройдет через каждый элемент списка (mylist) один за другим и отобразит их на экране.
❕В данном примере все элементы списка имеют целочисленный тип (int)
Тип данных (int) в Python используется для работы с целыми числами. Это один из основных типов данных в языке программирования Python.
С использованием условия (if) и цикла (for) можно выбирать и выводить определенные элементы из списка ↓
→ Вывод элементов списка, кратных 2:
- mylist — список с числовыми элементами
- [22, 5, -6, 81, 0, 25, 4, 30] — элементы списка (данные, которые хранятся в списке)
- if — условие для проверки кратности текущего элемента на 2
- % — остаток от деления в Python
Данная программа выводит на экран элементы списка, кратные 2.
→ Подсчёт суммы чисел в списке:
- my1 — список с числовыми элементами
- [12, -5, 27, 34, 101, -40] — элементы списка (данные, которые хранятся в списке)
- sum1 — переменная для подсчёта суммы и записи ответа
❕В данном примере все элементы списка имеют целочисленный тип (int)
Генератор списков (List comprehension)
— используется для создания списков
Генераторы списков позволяют писать код более компактно. Вместо нескольких строк для создания нового списка → всего одна строка ⤵
- append() — добавление элемента в конец существующего списка
☑ В некоторых случаях, генераторы списков могут выполняться быстрее, чем обычные циклы.
Функция enumerate()
используется для одновременного вывода элементов и их числовых индексов из итерируемого объекта
Что такое итерируемый объект❓
- Итерируемый объект — это объект, через который можно пройтись поочередно, получая доступ к его элементам
- Итерируемый объект — это что-то, с чем можно работать по частям, один элемент за раз. Это как корзина с фруктами: можно взять один фрукт, посмотреть на него, а потом взять следующий.
Отличия функции enumerate от функции range в цикле for ↓
Не нужно использовать функции range и len, чтобы получить индексы. Вы получаете их автоматически →
- range + len: for i in range(len(s))
где s[i] — индекс элемента
- enumerate: for x, y in enumerate(s)
где x — индекс элемента
→ Не нужно использовать квадратные скобки для определения индекса элемента
☑ Функция enumerate делает код более понятным, компактным и читабельным.
Синтаксис функции enumerate ↓
- enumerate(iter(последовательность))
Пример использования функции enumerate() со списком:
Обычный цикл for просто перебирает элементы последовательности без дополнительной информации об объекте их положении.
Используя enumerate, вы уменьшаете вероятность ошибок (например, забыв проверять длину списка и выйти за его пределы).
Функция enumerate() позволяет получить индекс (номер элемента) вместе со значением элемента из итерируемого объекта (списка).
Итерируемый объект (iterable) в программировании — это объект, который может быть повторен или пройден циклом.
🔥Для более подробно изучения списков (list) в Python, рекомендую ознакомится со следующей статьей:
Цикл for + оператор else
Оператор else в цикле for используется для выполнения блока кода после завершения всех итераций цикла, если цикл был завершен без использования оператора break.
Внимательно посмотрите на 2 примера:
❶ Выполнение цикла for + надпись 'Цикл for завершён':
В первом примере после выполнения цикла for сработает оператор else. Поэтому, на экране появится надпись: 'Цикл for завершён'. Теперь внимательно посмотрите на второй пример и на результат выполнения его программы:
❷ Выполнение цикла for + отсутствие надписи 'Цикл for завершён':
Почему print('Цикл for завершён') не выполнил свою команду и не отобразил надпись на экране?
Цикл for завершил свою работу досрочно, благодаря оператору else. Когда переменная (i) стала равна 3, выполнилось условие для (if) и сработал оператор break.
Оператор else после цикла for работает только в том случае, если цикл for выполнен полностью, каждый его шаг, каждая итерация. Если цикл был прерван, с помощью оператора break, то конструкция else не выполнится.
🆘Важное замечание:
Стоит отметить, что речь идёт именно о связке цикла for + оператора else. Когда они располагаются на одном уровне в программе. И оператор else стоит после цикла for. В других случаях, когда else используется с оператором if и находится внутри цикла, данная связка (for + else) не работает.
Цикл for со множествами (set)
используется для перебора элементов множества (set)
- Множества (set) в Python — это коллекция уникальных элементов, которая не содержит дубликатов.
- Если вы попытаетесь добавить дубликат, он просто не будет добавлен.
Поскольку множество не имеет порядка, вывод элементов может быть в любом порядке.
🔥Цикл for в Python — это мощный инструмент для перебора элементов в коллекциях. Данный цикл упрощает синтаксис программы. Делает код более читабельным и повышает его эффективность.
Используйте цикл for, чтобы оптимизировать свои решения и сделать ваш код на 💯
😉 Good job! Keep it up! Good luck!