Примеры использования цикла for
В прошлом уроке мы познакомились со структурой цикла for
. Конструкции с использованием циклов используются очень часто для решения различного рода задач. Давайте рассмотрим популярные задачи с использованием циклов.
Поиск количества с использованием счётчика
Очень часто при решении типовых задач приходится подсчитывать количество чисел из некоторой последовательности, которые удовлетворяют определенным условиям. Для этого удобно использовать переменную-счётчик, которая будет последовательно накапливать количество найденных чисел и в конце цикла выводить итоговый результат.
Например, данный код считает количество положительных чисел, оканчивающихся на , в диапазоне от до :
count = 0
for num in range(-100, 100 + 1):
if num > 0 and num % 10 == 7:
count += 1
print(count)
И выводит
10
В этом коде сначала создается переменная-счетчик count
с нулевым значением, а затем последовательно перебираются все числа из диапазона , и каждый раз, когда выполняется условие if
, значение count
увеличивается на , что сигнализирует о том, что было найдено ещё одно очередное подходящее значение. И после выполнения цикла в count
будет храниться итоговое количество найденных чисел.
! Обратите внимание на то, что для включения правой границы в перебор мы увеличиваем конечное значение на .
Вычисления на числовом диапазоне
Нередко требуется обработать числа из определенного диапазона и произвести некоторые вычисления с ними. К подобного рода задачам можно отнести поиск суммы, произведения, среднего арифметического конкретных значений и прочее.
Поиск суммы
Данный код:
s = 0
for num in range(50, 151):
if num % 12 == 5:
s += num
print(s)
находит сумму чисел из отрезка , остаток от деления на которых равен .
В зависимости от задачи условие отбора может меняться, но общая реализация остается прежней.
Поиск произведения
Данный код:
p = 1
for num in range(2, 11):
if num % 2 == 0:
p *= num
print(p)
находит произведение чётных чисел из отрезка .

Обратите внимание на то, что начальное значение p
равно единице.
Подобным образом можно вычислить факториал некоторого числа n
.
Приведенный ниже код:
n = int(input())
factorial = 1
for num in range(1, n + 1):
factorial *= num
print(factorial)
при вводе числа выведет .
Примечание. Факториал числа — это произведение всех чисел от до .
Поиск среднего арифметического
Приведенный ниже код:
s = count = 0
for num in range(103, 217):
if num % 5 == 0:
s += num
count += 1
average_value = s / count
print(average_value)
перебирает числа из отрезка и находит среднее арифметическое всех чисел, удовлетворяющих условию. Для этого требуется сумму всех подходящих чисел разделить на их количество: в переменную s
записывается сумма чисел, а в count
— их количество.
Примечание. Можно отвечать и на другие вопросы, связанные с вычислением на числовых диапазонах. Выше приведены распространенные примеры.
Поиск максимума и минимума
С помощью цикла можно обработать введённые с клавиатуры числа и найти максимальное и минимальное из них.
Пусть на вход подается неотрицательных целых чисел, не превышающих .
Данный код:
n = int(input())
max_num = -1
min_num = 10001
for _ in range(n):
num = int(input())
if num > max_num:
max_num = num
if num < min_num:
min_num = num
print(min_num, max_num)
сначала создает переменные max_num
и min_num
, которые и будут использованы для сохранения максимального и минимального из введенных значений соответственно. Изначально max_num
принимает строго меньшее значение, чем минимальное из допустимых чисел. Это нужно для того, чтобы условие перезаписи максимума выполнилось независимо от величины введенного первого числа. Аналогично min_num
на старте принимает значение, большее максимального допустимого.
Пусть приведенной выше программе на вход будут подано число , а затем . Составим таблицу пошагового выполнения программы и рассмотрим как меняются max_num
и min_num
на каждой итерации:
То есть на каждой итерации значения min_num
и max_num
будут перезаписываться в зависимости от величины введенного числа, а в конце цикла они будут содержать минимальное и максимальное из введенных значений: и соответственно.
Переменная цикла как порядковый номер элемента
Переменную цикла удобно использовать для отслеживания номера текущего элемента. Рассмотрим код:
for i in range(1, 6):
a = int(input())
print('Номер элемента —', i, 'Значение элемента —', a)
Данная программа после считывания очередного числа сразу же выводит его порядковый номер и значение.
Например, при последовательном вводе на экран будет выведено
Номер элемента — 1 Значение элемента — 10
Номер элемента — 2 Значение элемента — 20
Номер элемента — 3 Значение элемента — -15
Номер элемента — 4 Значение элемента — 17
Номер элемента — 5 Значение элемента — -4