Когда достаете белье после стирки, берете по одной вещи, размешиваете, и так — до конца.
Это повторяющееся действие: одна и та же задача, только с разными элементами. В программировании так же. Если нужно повторить один и тот же код много раз, например пройтись по списку чисел, напечатать каждое слово в предложении или обработать все файлы в папке, используют for. Функция будет автоматически повторять действия столько раз, сколько нужно.
В статье разберем виды циклов и как с ними работать.
Назначение цикла for в Python
Цикл for
повторяет одно и то же действие несколько раз с каждым элементом из набора данных. Например, есть список фруктов: яблоко, банан и апельсин. И про каждый нужно сказать «Я люблю…». Функция for
по очереди берет каждый фрукт из списка и повторяет нужную фразу.
- сначала печатает: «Я люблю яблоко»;
- потом: «Я люблю банан»;
- и последнее: «Я люблю грушу».
Когда дойдет до конца списка, остановится.
Цикл автоматически повторил действия для каждого элемента — не пришлось дублировать код вручную.
Итерации
В Python всё начинается с итераций.
- Итерация — это один повтор действия в цикле. Если цикл работает пять раз, значит, у него пять итераций. Например, накладываете по ложке супа в три тарелки. Каждая ложка — это одна итерация. Три тарелки — три итерации.
- Итератор — это «механизм» или специальный объект, который по очереди выдает элементы из набора. Например, в коробке лежат три яблока. Протягиваете руку и берете по одному. Рука — это итератор. Каждый раз она вытаскивает одно яблоко.
- Итерируемые объекты — это данные, по которым проходит функция: список, строка, словарь, множество и другие. Всё та же коробка с яблоками — это итерируемый объект. Вы достаете по одному яблоку (элементу), пока коробка не опустеет.
Чтобы объект можно было перебирать в цикле for, элемент должен поддерживать «правила итерации». У него должен быть метод __iter__
, который возвращает сам итератор. И метод __next__
, который дает следующий элемент и в конце сообщает: всё, больше элементов нет.
Итерируемый объект как книга. Итератор как закладка, которая двигается от страницы к странице. А итерация происходит каждый раз, когда вы переворачиваете страницу. Источник: sky.pro
Освойте Python на онлайн-курсе «Python-разработчик» в Skypro. Курс подходит даже тем, кто раньше не программировал и у кого нет технического образования. Занятия — в удобном формате: короткие видеоуроки, много практики, задания и мастер-классы. В конце каждой недели — живая встреча с опытными разработчиками: сможете задать вопросы и разобрать домашки.
Виды циклов
Есть два основных цикла:
- Цикл
for
. Выполняет действия определенное количество раз. Его используют, когда заранее известно, сколько раз нужно повторить шаг. Например, сказать «Привет!» ровно пять раз. Вы заранее знаете, что скажете это пять раз, значит, используете цикл for. Каждый раз говорите «Привет!», пока не дойдете до пятого раза. - Цикл
while
. Выполняет действия, пока условие истинно. Функцию используют, когда точно непонятно, сколько повторений нужно сделать. Цикл продолжается, пока есть условие. Например, хотите пить воду, пока не выпьете целую бутылку. Но точно не знаете, сколько глотков нужно сделать. Пьете глоток за глотком, пока бутылка не станет пустой. Так работает цикл while — пока условие «бутылка не пуста» истинно, действие повторяется.
Синтаксис цикла for
Эти конструкции помогают писать более эффективный и читаемый код.
Структура простого цикла Python for
Это самый обычный цикл for, который перебирает элементы один за другим. Его используют, когда есть готовый список, строка или диапазон чисел. И с каждым элементом нужно сделать что-то одинаковое.
Например, есть список имен, и каждому человеку нужно сказать «Привет». Цикл по очереди берет каждый элемент из списка и печатает приветствие.
names = ["Аня", "Борис", "Вика"]
for name in names:
print("Привет,", name)
Не нужно писать одну и ту же фразу десять раз.
Структура вложенного цикла for
Когда один цикл находится внутри другого. То есть цикл работает в цикле. Такой метод применяют, когда нужно делать два действия параллельно. Нарисовать таблицу, найти все комбинации двух списков или работать с матрицами.
Например, в школе каждый день проходят три урока. И нужно написать, какие уроки будут в каждый день недели.
В коде это выглядит так:
days = ["Понедельник", "Вторник"]
lessons = ["Математика", "Русский язык", "История"]
for day in days: # Внешний цикл — по дням
print("День:", day)
for lesson in lessons: # Внутренний цикл — по урокам
print(" Урок:", lesson)
Функция сначала берет первый день, «Понедельник», и внутри него перечисляет все три урока. Потом берется второй день, «Вторник», и тоже перечисляет три урока.
В результате получается:
День: Понедельник
Урок: Математика
Урок: Русский язык
Урок: История
День: Вторник
Урок: Математика
Урок: Русский язык
Урок: История
Один цикл перебирает дни, второй — уроки для каждого дня. Вместе они дают сочетание «день + урок».
Структура цикла for с условием
Это обычный цикл for, который идет по элементам и выполняет действия, только если есть условие.
Например, есть список чисел и нужно выбрать только четные. Цикл for перебирает всё, а условие if проверяет, четное ли значение.
numbers = [1, 2, 3, 4, 5, 6]
for num in numbers:
if num % 2 == 0:
print(num, "— чётное")
Если да, цикл выполняет команду. Например, печатает число. Если нет, просто идет к следующему элементу.
Структура цикла for с прерыванием break и пропуском continue
Прерывание break — это цикл, который быстро останавливает весь процесс, если срабатывает определенное условие. Например, нужно найти конкретное слово в списке.
numbers = [1, 3, 5, 7, 0, 9]
for num in numbers:
if num == 0:
print("Найден ноль! Остановим цикл.")
break
print("Обрабатываем:", num)
Цикл перебирает элементы. И когда встречает подходящее условие, например, элемент = 0, сразу останавливается и выходит из программы. Даже если остались элементы.
Пропуск continue — это цикл, который пропускает отдельный шаг, если его не нужно обрабатывать. Например, в списке из десяти чисел тройку обрабатывать не нужно — просто пропустить и идти дальше. Цикл проверяет условие для каждого элемента.
numbers = [1, 2, 3, 4, 5]
for num in numbers:
if num == 3:
continue # Пропустить 3
print("Число:", num)
Если находит три, пропускает шаг и переходит к следующему элементу.
Число: 1
Число: 2
Число: 4
Число: 5
Если нет — делает обычные действия, например, печатает число.
Если пока сложно понять, не переживайте — это нормально для новичков. Приходите в Skypro на курс «Python-разработчик». Всё объяснят с нуля, шаг за шагом. Научитесь писать код, сделаете настоящие проекты для портфолио и получите диплом. А ещё вам помогут с трудоустройством — подскажут, как составить резюме и найти хорошую работу.
Как работать с циклом for в Python
Цикл for в Python перебирает разные типы данных: строки, списки, множества, словари или файлы.
По списку
Чтобы напечатать все числа из списка, запустите цикл:
elems = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for item in elems:
print(item)
Код берет по одному числу из списка и печатает на экране:
0
1
2
3
4
5
6
7
8
9
Если хотите просто перебрать числа от 0 до 9, используйте функцию range:
for i in range(0, 10):
print(i)
range
создает числа от 0 до 9, 10 не включает. Цикл берет каждое число и печатает его.
Результат будет такой же:
0
1
2
3
4
5
6
7
8
9
С шагом
Есть несколько способов вывести число из списка.
- Через индексы и проверку
Например, возьмите тот же список чисел от 0 до 9.
for i in range(len(elems)):
if i % 2 == 0:
print(elems[i])
range(len(elems)) — создает список от 0 до 9.
i % 2 == 0 — берет только четные индексы: 0, 2, 4 и другие.
С помощью elems[i] получаете и выводите элемент по этому индексу.
Результат:
0
2
4
6
8
- С помощью функции
enumerate
for index, value in enumerate(elems):
if index % 2 == 0:
print(value)
enumerate
сразу дает и номер, и значение. Если индекс четный, печатает значение.
Результат будет тот же:
0
2
4
6
8
- С шагом в
range
for i in range(0, 10, 2):
print(i)
range(0, 10, 2)
— создает числа от 0 до 9 с шагом 2. Получается: 0, 2, 4, 6, 8.
Это самые простые способы, если нужно просто пройти по числам через одно.
По строке
Цикл for
используют, когда хотят перебрать каждый символ строки по очереди.
Например, заменить все строчные буквы на заглавные.
for char in "THis is THe TEst sTRinG":
if char.islower():
print(char.upper())
else:
print(char)
Цикл берет каждую букву строки по одной. Если буква маленькая, например «h», меняет на большую — «H». Если большая — печатает как есть.
В результате получается:
T
H
I
S
I
S
T
H
E
T
E
S
T
S
T
R
I
N
G
Если читаете файл и хотите обработать каждую строку, напишите:
with open('file.txt', 'r') as f:
for line in f:
print(line)
open('file.txt', 'r')
— открывает файл для чтения.
with
— правильно закрывает файл после работы.
for line in f
— читает строку за строкой и выводит ее на экран.
По словарю
Словарь — это структура данных Python, в которой хранятся пары: ключ — значение.
Например, словарь:
mydict = {
1: "one",
2: "two",
3: "three"
}
1, 2, 3
— это ключи.
«one", "two", "three"
— значения, которые привязаны к этим ключам.
Итерацию по словарю проводят тремя способами.
-
- Перебор по ключам
Python автоматически берет ключи из словаря — по одному на каждой итерации.
for key in mydict:
print("Ключ:", key)
И получаете результат:
Ключ: 1
Ключ: 2
Ключ: 3
Если нужно получить значение, напишите так:
for key in mydict:
print("Ключ:", key, "| Значение:", mydict[key])
Результат:
Ключ: 1 | Значение: one
Ключ: 2 | Значение: two
Ключ: 3 | Значение: three
Это самый простой и распространенный способ. - Перебор только значенийЗдесь укажите, что нужны только значения:
for value in mydict.values():
print("Значение:", value)
Тогда результат будет такой:Значение: one
Значение: two
Значение: three
- Перебор ключей и значений одновременноВ таком способе обычно используют функцию items(), она возвращает пары: ключ, значение.Python автоматически распаковывает эту пару на две переменные — key и value.
for key, value in mydict.items():
print("Ключ:", key, "| Значение:", value)
Результат:
Ключ: 1 | Значение: one
Ключ: 2 | Значение: two
Ключ: 3 | Значение: three
Это удобно, когда нужно работать с обеими частями словаря одновременно.
- Перебор по ключам
Обратный цикл
Иногда нужно перебрать элементы в обратном порядке — с конца к началу. Например, от 9 до 0.
Есть два способа.
- С помощью reversed()
Функция переворачивает последовательность. Просто перебирает элементы в обратном порядке.
elems = (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
for item in reversed(elems):
print(item)
Вывод:
9
8
7
6
5
4
3
2
1
0
reversed(obj)
— создает обратный итератор, не копирует данные. - С помощью среза [::-1] (слайсинга)
Этот срез [::-1]дает программе команду брать все элементы в обратном порядке.
for item in elems[::-1]:
print(item)
Результат будет такой же:
9
8
7
6
5
4
3
2
1
0
obj[::-1]
— создает новый объект с элементами наоборот.
Генератор
Генератор for — это способ создать список, множество или словарь в одной строке.
Например, генератор списка:
import random
mylist = [random.randint(0, 11) for _ in range(20)]
random.randint(0, 11)
— создает случайное число от 0 до 11.
for _ in range(20)
— повторяет этот процесс 20 раз.
Всего получается 20 чисел, которые складываются в список mylist.
Символ _ означает, что сам номер повтора не важен, просто нужно создать 20 разных чисел.
В итоге получите список:
[5, 0, 7, 11, 3, 6, 1, 9, 10, 4, 2, 8, 0, 7, 11, 5, 6, 1, 3, 2]
Всё это узнаете уже в первом модуле курса «Python-разработчик»
А потом сразу примените знания на практике — создадите программу, которая расшифровывает азбуку Морзе.
Главное о цикле for
- Цикл for перебирает элементы один за другим и выполняет команды внутри себя.
- Функция работает только с тем, по чему может пройти по очереди — например, со строкой, списком, словарем или множеством.
- Внутри цикла можно добавлять условия — менять поведение.
- Если нужно остановить цикл раньше, используйте break. Если пропустить один элемент и идти дальше — continue.
Добавить комментарий