Статья Автор: Александр Ф. Алейников

5.2 Примеры использования цикла for

Примеры использования цикла for

В прошлом уроке мы познакомились со структурой цикла for. Конструкции с использованием циклов используются очень часто для решения различного рода задач. Давайте рассмотрим популярные задачи с использованием циклов.

Поиск количества с использованием счётчика

Очень часто при решении типовых задач приходится подсчитывать количество чисел из некоторой последовательности, которые удовлетворяют определенным условиям. Для этого удобно использовать переменную-счётчик, которая будет последовательно накапливать количество найденных чисел и в конце цикла выводить итоговый результат.

Например, данный код считает количество положительных чисел, оканчивающихся на 7, в диапазоне от 100 до 100:

count = 0
for num in range(-100, 100 + 1):
    if num > 0 and num % 10 == 7:
        count += 1
print(count)

И выводит

10

В этом коде сначала создается переменная-счетчик count с нулевым значением, а затем последовательно перебираются все числа из диапазона [100;100], и каждый раз, когда выполняется условие if, значение count увеличивается на 1, что сигнализирует о том, что было найдено ещё одно очередное подходящее значение. И после выполнения цикла в count будет храниться итоговое количество найденных чисел.

! Обратите внимание на то, что для включения правой границы в перебор мы увеличиваем конечное значение на 1.

Вычисления на числовом диапазоне

Нередко требуется обработать числа из определенного диапазона и произвести некоторые вычисления с ними. К подобного рода задачам можно отнести поиск суммы, произведения, среднего арифметического конкретных значений и прочее.

Поиск суммы

Данный код:

s = 0
for num in range(50, 151):
    if num % 12 == 5:
        s += num
print(s)

находит сумму чисел из отрезка [50;150], остаток от деления на 12 которых равен 5.

В зависимости от задачи условие отбора может меняться, но общая реализация остается прежней.

Поиск произведения

Данный код:

p = 1
for num in range(2, 11):
    if num % 2 == 0:
        p *= num
print(p)

находит произведение чётных чисел из отрезка [2;10].


Обратите внимание на то, что начальное значение p равно единице.

 

Подобным образом можно вычислить факториал некоторого числа n

Приведенный ниже код:

n = int(input())
factorial = 1
for num in range(1, n + 1):
    factorial *= num
print(factorial)

при вводе числа 5 выведет 120.

Примечание. Факториал числа n — это произведение всех чисел от 1 до n.

Поиск среднего арифметического 

Приведенный ниже код:

s = count = 0
for num in range(103, 217):
    if num % 5 == 0:
        s += num
        count += 1
average_value = s / count
print(average_value)

перебирает числа из отрезка [103;216] и находит среднее арифметическое всех чисел, удовлетворяющих условию. Для этого требуется сумму всех подходящих чисел разделить на их количество: в переменную s записывается сумма чисел, а в count — их количество. 

Примечание. Можно отвечать и на другие вопросы, связанные с вычислением на числовых диапазонах. Выше приведены распространенные примеры.

Поиск максимума и минимума 

С помощью цикла можно обработать введённые с клавиатуры числа и найти максимальное и минимальное из них.

Пусть на вход подается n неотрицательных целых чисел, не превышающих 10000.

Данный код:

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 на старте принимает значение, большее максимального допустимого.

Пусть приведенной выше программе на вход будут подано число n=5, а затем 8,0,1056,8192,517. Составим таблицу пошагового выполнения программы и рассмотрим как меняются max_num и min_num на каждой итерации:

Номер итерации Введенное число min_num max_num
1 8 8 8
2 0 0 8
3 1056 0 1056
4 8192 0 8192
5 517 0 8192

То есть на каждой итерации значения min_num и max_num будут перезаписываться в зависимости от величины введенного числа, а в конце цикла они будут содержать минимальное и максимальное из введенных значений: 0 и 8192 соответственно.

Переменная цикла как порядковый номер элемента

Переменную цикла удобно использовать для отслеживания номера текущего элемента. Рассмотрим код:

for i in range(1, 6):
    a = int(input())
    print('Номер элемента —', i, 'Значение элемента —', a)

Данная программа после считывания очередного числа сразу же выводит его порядковый номер и значение.
Например, при последовательном вводе 10,20,15,17,4 на экран будет выведено

Номер элемента — 1 Значение элемента — 10
Номер элемента — 2 Значение элемента — 20
Номер элемента — 3 Значение элемента — -15
Номер элемента — 4 Значение элемента — 17
Номер элемента — 5 Значение элемента — -4
Печать