Для выполнения повторяющихся, однотипных операций в программировании используются циклы. В Python таких циклов два:
- for – счетный цикл, повторяется определенное количество раз;
- while – условный цикл, повторяется до выполнения определенного условия.
В этой статье мы разберем цикл for, а в следующей – while.
Назначение цикла for в Python
Цикл for используется в двух случаях:
- Если нужно выполнить одну операцию (или набор из нескольких различных действий) определенное количество раз.
- Если необходимо провести итерацию (перебор) элементов коллекции – списка, строки, словаря, кортежа, множества – одновременно выполняя какие-либо операции с этими элементами.
В любом из этих случаев цикл for может быть:
- простым – состоящим из одного for-цикла;
- вложенным – состоящим из двух и более for-циклов.
Кроме того, цикл может содержать:
- простые и многоуровневые условия
if… elif… else; - оператор
breakдля прерывания иcontinueдля перехода к следующей итерации.
Каждый из этих вариантов мы рассмотрим ниже.
Структура простого цикла Python for
Простой цикл for выглядит так:
for название_переменной in range(число_повторений):
тело цикла
Простейший пример такого цикла:
>>> for i in range(5):
print('Python')
Python
Python
Python
Python
Python
Другой пример простого цикла – перебор элементов какой-либо коллекции:
for название_переменной in название_коллекции:
тело цикла
Код и результат работы подобного цикла выглядят так:
>>> for i in 'Python':
print(i)
P
y
t
h
o
n
Первая строка, открывающая цикл for, завершается двоеточием:. Такие двоеточия используются во многих конструкциях Python, не только в for, и каждый раз, обнаруживая :, интерпретатор будет ожидать индентацию (отступ) на следующей строке. Отступы в Python разделяют код на логические блоки (в других языках такое разделение происходит с помощью иных знаков – фигурных скобок, точки с запятой). В соответствии с руководством PEP8, отступ может состоять либо из 4 пробелов, либо из одного символа табуляции Tab. Индентация пробелами – предпочтительна, табами – допустима. Однако недопустимо смешивать пробелы и табуляцию – это сразу же приведет к ошибке:
TabError: inconsistent use of tabs and spaces in indentation
Недостаток или избыток пробелов также приводят к ошибке, поскольку не дают интерпретатору определить, к какому именно логическому блоку относится фрагмент кода:
IndentationError: unindent does not match any outer indentation level
Структура вложенного цикла for
Любой цикл for может включать в себя другой for-цикл (или даже несколько):
lst1 = ['1', '2', '3', '4', '5']
lst2 = ['a', 'b', 'c', 'd', 'e']
for i in lst1:
for j in lst2:
print(i + j)
Во время выполнения вложенного цикла Python сначала перебирает все элементы внутреннего цикла, а затем переходит к следующему элементу внешнего цикла:
1a
1b
1c
1d
1e
2a
2b
2c
2d
2e
3a
3b
3c
3d
3e
4a
4b
4c
4d
4e
5a
5b
5c
5d
5e
Структура цикла for с условием
Для проверки соответствия переменных (элементов) каким-либо условиям в Python используется конструкция вида if… elif… else…:
age = int(input('Сколько тебе лет? '))
if age < 7:
print('В какой детсад ходишь?')
elif 7 <= age <= 18:
print('В какой школе учишься?')
elif 18 <= age <= 23:
print('Учишься в ВУЗе?')
elif 60 <= age < 90 :
print('Уже не работаешь?')
elif age > 90:
print('Долгожитель!')
else:
print('Где работаешь?')
Разумеется, при решении более простых задач условие может выглядеть гораздо проще:
st = 'abracad5bra'
for i in st:
if not i.isalpha():
print(i)
Структура цикла for с прерыванием break и пропуском continue
Иногда цикл нужно завершить досрочно в связи с обнаружением
какого-либо значения или события. В этом случае используют оператор break:
st = '32ey.5yhsf$h%owe82038e-3q0dwaefsfdgfhyfWfd9fG'
for i in st:
if i.isdigit() and int(i) > 8:
break
Выполнение этого кода прервется, как только интерпретатор
дойдет до цифры 9 в строке st.
Помимо прерывания цикла, часто возникает необходимость не
совершать операцию (или набор действий) для определенного элемента. Для этого
используют оператор continue,
который переходит к следующей итерации при обнаружении элемента, который не
следует обрабатывать:
st = 'м.у$т^а>б(о@р'
for i in st:
if not i.isalpha():
continue
else:
print(i)
Этот код пропускает все символы, которые не являются буквами. Результат:
м
у
т
а
б
о
р
Ввод и вывод данных с помощью цикла for в Питоне
Цикл for часто используют для ввода данных. Например, так можно ввести вложенный список (матрицу) из n строк:
n = int(input())
lst = []
for i in range(n):
lst.append(list(map(int, input().split())))
А так матрицу можно вывести:
# 1-й способ вывода
for i in lst:
print(*i)
# 2-й способ вывода
for i in range(len(lst)):
for j in range(len(lst)):
print(lst[i][j], end=' ')
print()
print()
Результат вывода матрицы из 5 строк:
1 2 3 4 7
7 8 3 9 0
1 3 9 5 3
2 7 4 9 2
1 9 0 4 5
Отлично! Вы освоили основы работы с множествами.
Вы знаете их уникальные свойства, умеете их создавать и выполнять все стандартные операции: добавлять, удалять и сортировать элементы.
Но вся мощь множеств раскрывается, когда вы начинаете работать с несколькими наборами данных одновременно. Для этого в Python встроены сверхбыстрые математические операции. В полной версии урока вы освоите специальные методы множеств и научитесь:
- В одну строку находить общие элементы (пересечение), объединять коллекции и находить уникальные различия между ними.
- Мгновенно проверять, входит ли один набор данных в другой с помощью методов
issubsetиissuperset. - Применять эти мощные инструменты для решения 10 практических задач по анализу данных, поиску дубликатов и сравнениям.
Комментарии