Цикл for в Python: просто и понятно!
Привет! В этой статье мы поговорим о цикле for
в Python. Он позволяет работать с коллекциями любого типа (списки, строки, множества, словари):
for name in ["Вася", "Маша", "Петя"]:
print(name)
Вывод:
Вася
Маша
Петя
Цикл for с range
Чтобы выполнить блок кода определенное количество раз, мы можем воспользоваться функцией range
.
По умолчанию функция range
возвращает последовательность чисел, начиная с нуля:
for i in range(3):
print(i)
Вывод программы:
0
1
2
При этом мы можем указать, с какого числа начать:
for i in range(2, 5):
print(i)
Вывод:
2
3
4
Также мы можем поменять шаг цикла, передав третий аргумент в функцию range
:
for i in range(2, 9, 3):
print(i)
Вывод:
2
5
8
Какой будет вывод следующего кода на Python?
for i in range(3, 15, 4):
print(i)
Цикл for по строке
В Python мы можем использовать цикл for
для итерации по строке. Наш блок кода будет выполнен для каждого символа:
name = "Вася"
for letter in name:
print(letter)
Вывод:
В
а
с
я
Инструкция break
Python позволяет нам в любой момент завершить выполнение цикла преждевременно. Для этого нужно просто воспользоваться ключевым словом break
:
for i in range(10):
if i == 3:
print("Дальше не пойду")
break
print(i)
Вывод:
0
1
2
Дальше не пойду
Инструкция continue
Если мы не хотим полностью останавливать работу цикла, а только пропустить одну итерацию, мы можем воспользоваться ключевым словом continue
:
for i in range(5):
if i == 3:
print("3 не подойдет")
continue
print(i)
Вывод:
0
1
2
3 не подойдет
4
Из примера видно, что цикл for
продолжил свое выполнение, пропустив только один элемент. В этом примере можно было бы обойтись только if-else
:
for i in range(5):
if i == 3:
print("3 не подойдет")
else:
print(i)
Но я предпочитаю вариант с continue
, когда у нас есть много инструкций, которые должны быть выполнены в цикле. continue
позволяет убрать уровень вложенности, который возникает из-за использования else
.
Какой будет вывод следующего Python кода?
for i in range(5):
if i == 2:
continue
elif i == 4:
print("Завершение")
break
print(i)
for-else
Ключевое слово else
можно использовать не только с if
, но и с for
:
for i in range(3):
print(i)
else:
print("Закончили!")
0
1
2
Закончили!
Но давайте теперь попробуем добавить уже знакомый нам break
:
for i in range(3):
if i == 2:
break
print(i)
else:
print("Закончили!")
Тут вывод уже поменялся:
0
1
Никакого “Закончили!” мы не видим. Дело в том, что else
после for
срабатывает только в том случае, если цикл обработал все элементы без вызова break
. continue
на else
никак не влияет:
for i in range(3):
if i == 2:
continue
print(i)
else:
print("Закончили!")
Вывод:
0
1
Закончили!
Что будет выведено на экран?
for i in range(5):
if i % 3 == 0:
continue
elif i == 4:
break
print(i)
else:
print("Закончили!")
Вложенные циклы
Мы можем использовать цикл for
внутри другого цикла for
:
for i in range(1, 3):
for j in range(1, 3):
print(i, "*", j, "=", i * j)
Вывод:
1 * 1 = 1
1 * 2 = 2
2 * 1 = 2
2 * 2 = 4
При этом мы можем использовать циклы любой вложенности.
Инструкция pass
Если мы не хотим выполнять код в теле цикла, то можно просто указать ключевое слово pass
:
for i in range(100):
pass
Код выше ничего не сделает.
Функция enumerate с циклом for
Часто нужно знать порядковый номер элемента внутри цикла for
. Для этого можно обернуть список в функцию enumerate
:
names = ["Вася", "Маша", "Петя"]
for i, name in enumerate(names):
print(i, name)
Вывод:
0 Вася
1 Маша
2 Петя
Мы можем выбрать, с какого числа
enumerate
начнет подсчет при помощи аргументаstart
.
Какой будет вывод следующего кода на Python?
students = ["Иван", "Ольга", "Егор"]
for idx, student in enumerate(students, start=1):
print(idx, student)
Цикл for по словарю (dict)
Нужно пробежать по значениям в словаре? Не беда. Цикл for
с этим легко справиться:
ages = {
"Вася": 18,
"Маша": 22,
"Петя": 26,
}
for name in ages:
print(name, ages[name])
Вывод:
Вася 18
Маша 22
Петя 26
При этом мы можем получить сразу и имя и возраст:
for name, age in ages.items():
print(name, age)
Вывод:
Вася 18
Маша 22
Петя 26
Если же нам нужен только возраст, то можно воспользоваться методом .values()
:
for age in ages.values():
print(age)
Вывод:
18
22
26
Обход элементов в обратном порядке
Если по какой-то причине нам нужно пройтись по элементам в обратном порядке, то мы можем обернуть элементы в функцию reversed
:
for i in reversed(range(1, 4)):
print(i)
Вывод:
3
2
1
В случае с range
, мы можем просто передать отрицательный шаг, чтобы получить элементы в обратном порядке:
for i in range(3, 0, -1):
print(i)
Вывод этой программы идентичен предыдущей.
Что будет выведено на экран?
for i in reversed(range(3)):
print(i)
Цикл for в одну строку
Если вам нужно выполнить только одну инструкцию, то вы можете использовать сокращенную версию цикла for
:
for i in range(3): print(i)
Вывод:
0
1
2
Упражнения
-
Базовое использование
for
с разными типами коллекций:
Используйте разные типы коллекций (список, строку, множество, словарь) и напишите программу на Python, где с помощью циклаfor
вы будете выводить каждый элемент коллекции на экран. Ваша программа должна корректно обрабатывать каждый тип коллекции. -
Изучение функции
range
с разными параметрами:
a) Напишите программу, которая использует циклfor
иrange
для вывода чисел от 5 до 15.
b) Напишите программу, которая выводит каждое третье число в диапазоне от 10 до 25. -
Управление выполнением цикла с
break
:
Напишите программу, в которой будет список из 10 имен. Ваша задача - пройтись по списку имен с помощью циклаfor
, и как только вы встретите имя “Дима”, программа должна вывести “Нашел Диму!” и завершить выполнение цикла. Если в списке нет имени “Дима”, то программа должна вывести “Дима не найден”.
Если хотите всегда быть в курсе последних новостей в мире программирования и IT, подписываетесь на мой Telegram-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение