🧮
Счётчик, сумматор и произведение
Одна из самых частых задач — подсчёт количества. Держится она на переменной-счётчике: перед циклом её обнуляют, а в теле увеличивают на единицу, когда случилось то, что считаем.
counter = 0
for i in range(10):
num = int(input())
if num > 10:
counter = counter + 1
print('Было введено', counter, 'чисел, больших 10.')
Строка counter = counter + 1 читается так: «возьми старое значение, прибавь единицу и положи обратно». Начальное значение обязательно: без него на первом же шаге Python не будет знать, к чему прибавлять.
Ту же строку часто пишут короче — counter += 1. Это одно и то же.
Сумма устроена так же, только прибавляется не единица, а само число:
total = 0
for i in range(10):
num = int(input())
if num > 10:
total = total + num
print('Сумма чисел больших 10 равна', total)
У произведения начальное значение — единица, а не ноль: с нуля произведение так нулём и останется.
Через сумму считается и среднее значение — нужно только поделить накопленное на количество:
total = 0
for i in range(10):
total += int(input())
average = total / 10
print('Среднее значение равно', average)
Наибольшее и наименьшее ищут тем же приёмом: заводят переменную и переприсваивают её, когда встретилось что-то больше (или меньше) уже найденного.
largest = -1
for i in range(10):
num = int(input())
if num > largest:
largest = num
print('Наибольшее число равно', largest)
Начальное значение -1 здесь не случайно: в условии сказано, что все числа положительные, поэтому первое же сравнение сработает. Если про знак чисел ничего не известно, начальным берут первое прочитанное число, а не выдуманное.
И ещё один приём — сигнальная метка (флажок). Это переменная со значением True или False, которой одна часть программы сообщает другой, случилось ли что-нибудь. Классический пример — проверка числа на простоту:
num = int(input())
flag = True
for i in range(2, num):
if num % i == 0: # нашёлся делитель, кроме 1 и самого числа
flag = False
if num == 1:
print('Это единица, она не простая и не составная')
elif flag == True:
print('Число простое')
else:
print('Число составное')
Флажок ставят в True до цикла — «пока ничего плохого не нашли», — а в теле сбрасывают. После цикла по нему и принимают решение.