Синтаксис for
Цикл for перебирает элементы последовательности — например, строку по символам:
# Перебор строки — каждый символ по порядку
for char in "Python":
print(char) # P y t h o n
# Повторение N раз с помощью range()
for i in range(3):
print("Привет") # Привет Привет Привет
Переменная цикла (в примерах — char, i) принимает поочерёдно значение каждого элемента последовательности. Имя переменной может быть любым — выбирайте осмысленное название. Функция range() подробно разбирается в следующем уроке.
💡 Совет: Традиционные имена счётчиков. Для коротких циклов по числу итераций по традиции используют однобуквенные имена
i,j,k(от англ. index): во вложенных циклах внешний —i, внутренний —j, третий уровень —k. Для содержательного перебора (символы, элементы) лучше выбирать осмысленное имя:char,letter,item.
ℹ️ Примечание: for также умеет перебирать списки, кортежи и другие коллекции — мы познакомимся с ними в уроке 25 (списки) и уроке 27 (кортежи).
Что такое итерируемый объект
Итерируемый объект (iterable) — это объект, по элементам которого можно проходить в цикле for: строки, списки, кортежи, словари и другие коллекции. Главное — его можно перебирать по одному элементу за раз:
for item in "abc": # строка — итерируемый объект
print(item) # a b c
Итерируемым является и range() — подробнее в следующем уроке.
Перебор строки посимвольно
Строка — это последовательность символов, поэтому for отлично подходит для её перебора:
word = "Привет"
for letter in word:
print(letter) # П р и в е т
Можно также подсчитать количество определённых символов в строке:
text = "программирование"
count = 0
for char in text:
if char == "р":
count += 1
print(f"Буква 'р' встречается {count} раз(а)") # 3
for с else
else выполняется, если цикл не был прерван break:
# Ищем символ 'x' в строке
text = "abcde"
search = "x"
for char in text:
if char == search:
print(f"Нашли '{search}'!")
break
else:
print(f"'{search}' не найден")
# Вывод: 'x' не найден (else выполнился, т.к. break не сработал)
# Теперь с найденным символом
for char in text:
if char == "c":
print("Нашли 'c'!")
break
else:
print("'c' не найден")
# Вывод: Нашли 'c'! (break сработал, else не выполнился)
Переменная цикла
Переменная цикла существует и после завершения цикла:
for letter in "ABC":
pass
print(letter) # C (последнее значение)
ℹ️ Что такое pass?
pass— это оператор-заглушка «ничего не делать». Python требует, чтобы послеfor(как и послеif,whileи других конструкций с блоком) был хотя бы один оператор. Когда выполнять пока нечего, тело блока заполняютpass— он делает код синтаксически корректным, но ничего не выполняет.
ℹ️ Замечание: В этом уроке мы перебираем строки посимвольно и используем
range()для повторения действий N раз.forтакже умеет перебирать списки, кортежи и другие коллекции — они будут подробно разобраны в уроке 25 (списки) и уроке 27 (кортежи).