Цикл 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-канал, где я делюсь свежими статьями, новостями и полезными советами. Буду рад видеть вас среди подписчиков!
Обсуждение