Цикл for и функция range() в Python
Синтаксис цикла for, генератор чисел range(start, stop, step), вычисление суммы, произведения, факториала и счетчики условий.
Цикл for (цикл со счетчиком / цикл обхода) в языке Python используется в тех случаях, когда количество повторений тела цикла известно заранее либо требуется поочередно перебрать все элементы некоторой последовательности (чисел, символов строки или элементов списка).
Синтаксис цикла for:
for переменнаясчетчик in последовательность:
телоцикла (4 пробела)
На каждом витке цикла переменная-счетчик автоматически принимает следующее значение из заданной последовательности, выполняет команды тела цикла и переходит к следующему элементу без необходимости ручного инкремента (i += 1).
Цикл for
Итератор (i)
Для генерации арифметических последовательностей целых чисел в цикле for служит встроенная функция range().
Три варианта использования функции range():
1. range(stop) — с одним параметром: генерирует числа от 0 до (stop - 1) с шагом 1:
for i in range(5): # Числа: 0, 1, 2, 3, 4 (ровно 5 повторений! Число 5 не включается);
2. range(start, stop) — с двумя параметрами: генерирует числа от start до (stop - 1) с шагом 1:
for i in range(1, 6): # Числа: 1, 2, 3, 4, 5;
3. range(start, stop, step) — с тремя параметрами: от start до (stop - 1) с шагом step:
for i in range(2, 11, 2): # Четные числа: 2, 4, 6, 8, 10.
Если шаг step отрицательный, последовательность идет на убывание:
for i in range(5, 0, -1): # Обратный отсчет: 5, 4, 3, 2, 1.
range(stop)
Шаг step
Ловушка правой границы
Запомните: правая граница в range(start, stop) НИКОГДА не входит в диапазон! Чтобы цикл дошел до числа 10 включительно, нужно писать range(1, 11).
Два самых популярных шаблона применения цикла for:
1. Накопление суммы (сумматор):
summa = 0 # До цикла создаем «копилку», равную 0
for i in range(1, 101):
print("Сумма чисел от 1 до 100:", summa) # 5050
2. Накопление произведения (факториал n! = 1 · 2 · 3 · ... · n):
fact = 1 # ВНИМАНИЕ: копилка произведения инициализируется ЕДИНИЦЕЙ (не нулем!)
for i in range(1, n + 1):
print(f"{n}! = {fact}")
Копилка суммы (s = 0)
Факториал (f = 1)
Для подсчета количества элементов, удовлетворяющих определенному условию, внутри цикла for помещают условный оператор if со счетчиком count += 1:
for i in range(1, 51):
if i % 3 == 0: # Если число делится на 3
print("Чисел, кратных 3:", count)
